如果没有 https 配置文件,我正在设置一个使用 https 和 http 的负载均衡器。
我有多个虚拟主机尝试将 http 流量重定向到 https(类型 1),如下所示:
server {
listen 80;
server_name example.xyz www.example.xyz;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl;
server_name example.xyz;
ssl on;
ssl_certificate /etc/nginx/ssl/example.xyz/fullchain.pem;
ssl_certificate_key /etc/nginx/ssl/example.xyz/privkey.pem;
location / {
proxy_pass http://myapp1;
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 $scheme;
}
}
我也有一个虚拟主机来处理所有 http 流量(类型 2),就像这样。
upstream myapp1 {
server 8.8.8.8;
server 8.8.4.4 backup;
}
server {
listen 80 default_server;
location / {
proxy_pass http://myapp1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
此设置无效。我有两个问题
类型 1 虚拟主机未重定向到 https。
我有
foo.com
的类型 1 配置,bar.com
和baz.com
但是bar.com
和baz.com
使用来自foo.com
的 ssl 证书
最佳答案
对于您的第一个问题,请尝试执行重定向:
return 301 https://$host$request_uri;
由于您配置了两个服务器名称,我更喜欢直接使用来自传入请求的主机信息。参见 http://nginx.org/en/docs/http/ngx_http_core_module.html#var_host
对于你的第二个问题,我无话可说。您粘贴的配置看起来不错。确保不同的文件夹包含不同的证书 ;-)
关于http - Nginx http 和 https block 配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35797089/