Nginx负载平衡器支持HTTP和HTTPS

Nginx负载平衡器支持HTTP和HTTPS,nginx,Nginx,我已经配置了一个Nginx负载平衡器,因此它可以与更多Nginx+PHP5-FPM服务器分离流量。负载平衡器Nginx website.com.conf(vhost)的配置如下: upstream backend { ip_hash; server IP_NGINX_PHP5FPM_NODE1; server IP_NGINX_PHP5FPM_NODE2; } server { listen 80; server_name www.web

我已经配置了一个Nginx负载平衡器,因此它可以与更多Nginx+PHP5-FPM服务器分离流量。负载平衡器Nginx website.com.conf(vhost)的配置如下:

upstream backend  {
    ip_hash;
    server IP_NGINX_PHP5FPM_NODE1;
    server IP_NGINX_PHP5FPM_NODE2;
}

server {
    listen       80;
    server_name  www.website.com website.com;

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://backend;
    }
}
因此,当用户通过HTTP访问站点时,负载平衡器可以使用两个节点来处理流量。所有的工作与HTTP很好,但我需要它也支持HTTPS。所以我把它编辑成这样:

upstream backend  {
    ip_hash;
    server IP_NGINX_PHP5FPM_NODE1;
    server IP_NGINX_PHP5FPM_NODE2;
}

server {
    listen       80;
    listen       443 ssl;
    server_name  www.website.com website.com;

    ssl on;
    ssl_certificate /var/www/website.com/ssl/website-bundle.crt;
    ssl_certificate_key /var/www/website.com/ssl/diosesbueno.key;
    ssl_buffer_size 8k;
    ssl_stapling on;
    ssl_stapling_verify on;
    ssl_trusted_certificate /var/www/website.com/ssl/trustchain.crt;
    ssl_dhparam /var/www/website.com/ssl/dhparam.pem;
    ssl_session_cache shared:SSL:20m;
    ssl_session_timeout 10m;
    ssl_prefer_server_ciphers on;
    ssl_ciphers HIGH:!aNULL:!MD5:!kEDH;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

    location / {
        proxy_set_header HOST $host;
        proxy_set_header X-Forwarded-Proto $scheme;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_pass  http://backend;
    }
}
如果我通过HTTPS访问该网站,它可以工作,但Firefox表示该网站包含未加密的元素并发出警报,请参见此屏幕截图:


有人能帮我解决这个问题吗?

这可能与您的nginx配置无关


很可能您正在通过HTTP链接引用页面中的一些文件—图像、JavaScript、CSS等。确保您使用的是相对URL。Chrome的web inspector的错误控制台实际上会告诉您触发警告的确切URL。

这可能与您的nginx配置无关


很可能您正在通过HTTP链接引用页面中的一些文件—图像、JavaScript、CSS等。确保您使用的是相对URL。Chrome的web inspector的错误控制台实际上会告诉您触发警告的确切URL。

这可能与您的nginx配置无关


很可能您正在通过HTTP链接引用页面中的一些文件—图像、JavaScript、CSS等。确保您使用的是相对URL。Chrome的web inspector的错误控制台实际上会告诉您触发警告的确切URL。

这可能与您的nginx配置无关


很可能您正在通过HTTP链接引用页面中的一些文件—图像、JavaScript、CSS等。确保您使用的是相对URL。Chrome的web inspector的错误控制台实际上会告诉您触发警告的确切URL。

我认为该错误与您的服务器设置无关,而是由于使用http包含页面上的某些内容。查看FireBug中的“网络”选项卡,看看是否有东西是通过网络获取的。http。通常是a.js或css,我不认为这个错误与您的服务器设置有关,而是因为页面上的某些内容是使用http包含的。查看FireBug中的“网络”选项卡,看看是否有东西是通过网络获取的。http。通常是a.js或css,我不认为这个错误与您的服务器设置有关,而是因为页面上的某些内容是使用http包含的。查看FireBug中的“网络”选项卡,看看是否有东西是通过网络获取的。http。通常是a.js或css,我不认为这个错误与您的服务器设置有关,而是因为页面上的某些内容是使用http包含的。查看FireBug中的“网络”选项卡,看看是否有东西是通过网络获取的。http。通常是a.js或css

多亏了@ceejayoz和@Martin answers,我在网站页面中发现了与混合内容HTTPS/HTTP有关的问题。基本上,后端Nginx节点通过HTTP将网站内容发送到Nginx load Blacker HTTPS。因此,向用户显示的网页在代码中有一些HTTP链接。为了解决这个问题,我在Nginx节点中也添加了对SSL的支持,并修改了Nginx负载平衡器vhost以在proxy-pass指令中支持https:

proxy_pass  https://backendssl;
在SSL服务器内部:

server {
    listen       443 ssl;
这是上游后端SSL的内容:

upstream backendssl  {
    ip_hash;
    server IP_ADDRESS_NODE1:443;
    server IP_ADDRESS_NODE2:443;
}
由于网站始终需要HTTPS连接,我还添加了:

server {
    listen       80;
    server_name  www.website.com website.com;
    return       301 https://$server_name$request_uri;
}
在Nginx负载平衡器vhost中


希望本文能对其他用户有所帮助

多亏了@ceejayoz和@Martin answers,我在网站页面中发现了与混合内容HTTPS/HTTP相关的问题。基本上,后端Nginx节点通过HTTP将网站内容发送到Nginx load Blacker HTTPS。因此,向用户显示的网页在代码中有一些HTTP链接。为了解决这个问题,我在Nginx节点中也添加了对SSL的支持,并修改了Nginx负载平衡器vhost以在proxy-pass指令中支持https:

proxy_pass  https://backendssl;
在SSL服务器内部:

server {
    listen       443 ssl;
这是上游后端SSL的内容:

upstream backendssl  {
    ip_hash;
    server IP_ADDRESS_NODE1:443;
    server IP_ADDRESS_NODE2:443;
}
由于网站始终需要HTTPS连接,我还添加了:

server {
    listen       80;
    server_name  www.website.com website.com;
    return       301 https://$server_name$request_uri;
}
在Nginx负载平衡器vhost中


希望本文能对其他用户有所帮助

多亏了@ceejayoz和@Martin answers,我在网站页面中发现了与混合内容HTTPS/HTTP相关的问题。基本上,后端Nginx节点通过HTTP将网站内容发送到Nginx load Blacker HTTPS。因此,向用户显示的网页在代码中有一些HTTP链接。为了解决这个问题,我在Nginx节点中也添加了对SSL的支持,并修改了Nginx负载平衡器vhost以在proxy-pass指令中支持https:

proxy_pass  https://backendssl;
在SSL服务器内部:

server {
    listen       443 ssl;
这是上游后端SSL的内容:

upstream backendssl  {
    ip_hash;
    server IP_ADDRESS_NODE1:443;
    server IP_ADDRESS_NODE2:443;
}
由于网站始终需要HTTPS连接,我还添加了:

server {
    listen       80;
    server_name  www.website.com website.com;
    return       301 https://$server_name$request_uri;
}
在Nginx负载平衡器vhost中


希望本文能对其他用户有所帮助

多亏了@ceejayoz和@Martin answers,我在网站页面中发现了与混合内容HTTPS/HTTP相关的问题。基本上,后端Nginx节点通过HTTP将网站内容发送到Nginx load Blacker HTTPS。因此,向用户显示的网页在代码中有一些HTTP链接。为了解决这个问题,我在Nginx节点中也添加了对SSL的支持,并修改了Nginx负载平衡器vhost以在proxy-pass指令中支持https:

proxy_pass  https://backendssl;
在SSL服务器内部:

server {
    listen       443 ssl;
这是上游后端SSL的内容:

upstream backendssl  {
    ip_hash;
    server IP_ADDRESS_NODE1:443;
    server IP_ADDRESS_NODE2:443;
}
由于网站始终需要HTTPS连接,我还添加了:

server {
    listen       80;
    server_name  www.website.com website.com;
    return       301 https://$server_name$request_uri;
}
在Nginx负载平衡器vhost中


希望本文能对其他用户有所帮助

您不需要
ssl on
directive您不需要
ssl on
directive您不需要
ssl on
directive您不需要
ssl on
directive谢谢,这些信息帮助了我。我在下面添加了一个带有m的答案