我目前有我的服务器在my.server.com nginx设置。 使用当前configuration,我使用http://my.server.com/app1或http://my.server.com/app2访问不同的应用程序。
我有一个apps.conf放置在/etc/nginx/sites-enabled/是这样的:
upstream app1_servers { server 172.12.11.10:8080; } upstream app2_servers{ server 172.12.11.10:9090; } server { listen 80; server_name my.server.com; return 301 https://my.server.com/$request_uri; #force https } server { listen 443; ssl on; ssl_certificate /etc/ssl/my.server.com/cert.pem; ssl_certificate_key /etc/ssl/my.server.com/priv.pem; server_name my.server.com; location /app1 { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto https; proxy_pass http://app1_servers/app1; proxy_redirect http://$host https://$host; proxy_set_header Host $host; } location /app2 { proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto https; proxy_pass http://app2_servers/app2; proxy_redirect http://$host https://$host; proxy_set_header Host $host; } }
题
以上工作正常。 不过,现在我想改变我如何访问app1和app2 。 我想通过http://app1.my.server.com和http://app2.my.server.com访问它们,同时仍然保持强制ssl和做proxy_pass
我需要做什么configuration更改才能生效? 此外,我想保持每个应用程序的configuration设置在其单独的文件。
这应该很容易。 您只需要为每个子域创build服务器块,获取子域的SSL证书(除非主证书是通配证书),并通过一些调整复制适用的位置块。
这样的东西应该可以工作,虽然我没有testing过,所以它几乎肯定会需要一些调整。
server { listen 80; server_name app1.server.com; return 301 https://app1.server.com/$request_uri; #force https } server { listen 443; ssl on; ssl_certificate /etc/ssl/app1.server.com/cert.pem; # changed ssl_certificate_key /etc/ssl/app1.server.com/priv.pem; # changed server_name app1.server.com; # changed location / { # changed proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Server $host; proxy_set_header X-Forwarded-Proto https; proxy_pass http://app1_servers/app1; proxy_redirect http://$host https://$host; proxy_set_header Host $host; }