nginx和SSLredirect

我有一个我用作代理的nginx服务器。 我想要所有的请求作为正常的http请求转发,期望请求到api.mydomain.org,我希望与ssl / https运行的请求。

这与以下工作正常:

server { listen 80; server_name api.mydomain.org; return 301 https://api.mydomain.org$request_uri; } server { listen 443; server_name api.mydomain.org; location / { proxy_pass http://backend; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; proxy_redirect off; proxy_buffering off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto https; } ssl on; ssl_certificate /etc/nginx/ssl/api.mydomain.org/server.crt; ssl_certificate_key /etc/nginx/ssl/api.mydomain.org/server.key; } 

但是,这会将所有请求redirect到没有明确指定/限定的子域。 如a.mydomain.org或b.mydomain.org被发送到https://api.mydomain.org 。

我如何configuration?

添加一个默认的服务器块,将捕获未知的主机头,并拒绝连接到他们。

 server { listen 80 default_server; return 444; } 

您可能需要将您的公共IP地址(es)添加到您的第一个块中的server_name指令,以接受使用带有IP地址的HTTP / 1.0或HTTP / 1.1的连接。