专家。
我正在尝试将 nginx/1.10.0 配置为在非标准端口上使用 ssl 终止的 2 个 https web 服务器的上游。
这是我当前在 sites-available/ 中的网站设置
upstream backend {
ip_hash;
server 172.31.16.1:8444;
server 172.31.16.2:8444;
}
server {
listen 80;
listen 443 ssl;
listen 8444 ssl;
ssl on;
server_name backend_1;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log;
ssl_session_cache shared:SSL:5m;
#--------ssl certificates for fronend------------#
ssl_certificate /etc/nginx/ssl/nginxSvr.crt;
ssl_certificate_key /etc/nginx/ssl/nginxSvr.key;
ssl_verify_client off;
location / {
proxy_pass https://172.31.16.1;
# proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_certificate /etc/nginx/ssl/IPSUMCUICA.crt;
proxy_ssl_certificate_key /etc/nginx/ssl/IPSUMCUICA.key;
proxy_ssl_session_reuse off;
}
它在不使用上游部分的情况下也能工作。但是当我将 proxy_pass 更改为代理密码 https://后端;我收到 404 错误,并且https://后端:8444在浏览器中。
显然它尝试解析这个名称但失败了,可能是因为出现了一些错误,但在这种情况下错误日志是空的。欢迎提出所有建议。谢谢。
答案1
不知怎么的,我找到了解决方案。我在 location 指令中添加了 proxy_set_header Host $http_host;。现在初始配置可以正常工作了。
upstream backend {
ip_hash;
server 172.31.16.1:8444;
server 172.31.16.2:8444; }
server {
listen 8444 ssl;
server_name backend_1;
access_log /var/log/nginx/access.log;
error_log /var/log/nginx/error.log info;
ssl_session_cache shared:SSL:5m;
ssl_certificate /etc/nginx/ssl/nginxSvr.crt;
ssl_certificate_key /etc/nginx/ssl/nginxSvr.key;
ssl_verify_client off;
location / {
proxy_pass https://backend;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_ssl_session_reuse off;
proxy_set_header Host $http_host;
}
}