Docker nginx 均衡负载功能https配置及遇到的问题

瘦欲@ 提交于 2020-03-01 03:34:10

自己的一个服务器因为想使用均衡负载,这样方便创建各种不同的服务器环境。
由于要开发小程序,所以要配置个https,研究了挺久的,这里大概写一下自己的一些配置总结。

均衡负载Https的配置,证书要配置的主nginx下,因为我用的是nginx转发到lnmpa下的容器,刚开始搞不清楚在哪里配置https证书。就是docker分容器下进行配置了https证书,但是没有成功还出现了400错误什么的。后来解决思路是直接新建一个映射服务器80和443端口的容器,并在这个容器上配置了https证书,配置成功。于是把配置的文件保存下来,用于之后配置均衡负载的分容器下。

之后,重新建了nginx转发主容器,映射服务器的80和443端口,再建分容器,把它的80和443端口映射到服务器的其它一些端口。

之后,在主nginx容器下配置upstream到对应的域名,并配置对应的域名,转发到分容器的443端口,可是用之前分容器配置好的https提示错误,于是就把分容器下的证书引用注释掉了,显示就正常,如果不是https访问域名就正常,但是是https访问是就出现了相关的一些错误。后来在主容器下的nginx的域名下配置了443和引用证书,显示400错误,出现的错误有

1、SSL_ERROR_RX_RECORD_TOO_LONG
这个是要在主nginx下域名配置下的listen 443后尾加上default ssl,这个错误就不再出现了。

2、400 Request Header Or Cookie Too Large。
这个问题是在location / 里的proxy_pass配置,把域名改成访问容器的443端口。这样就配好了。


主nginx的配置

upstream xxx.com {
      server  12.15.1.1:10431;
}
server{
    #listen 80;
    listen 443 default ssl;
    server_name xxx.com;
    
    #ssl on;
    ssl_certificate /etc/nginx/conf.d/SSL/www.xxx.com/www.xxx.com.pem;
    ssl_certificate_key /etc/nginx/conf.d/SSL/www.xxx.com/www.xxx.com.key;
    ssl_session_timeout 5m;
    #ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    #ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
    #ssl_prefer_server_ciphers on;
    
    location / {
        proxy_pass         http://12.15.1.1:10431;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
    }
}

 分容器的nginx的域名配置文件

server
{
    #listen 80;
    listen 443;
    server_name www.xxx.com;
    index index.html index.htm index.php default.html default.htm default.php;
    root  /home/www/www.xxx.com;


    #error_page   404   /404.html;
    include proxy-pass-php.conf;

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
        expires      30d;
    }

    location ~ .*\.(js|css)?$
    {
        expires      12h;
    }

    location ~ /\.
    {
        deny all;
    }

    access_log off;
}

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!