• nginx反向代理https访问502, nginx反向代理, 支持SNI的https回源,SNI源点,nginx反向代理报错


    正常nginx配置了SSL是可以通过HTTPS访问后端的,但是对有配置SNI + https后端的支持有点麻烦。

    编译安装nginx后,看一下是否支持SNI

    /usr/local/nginx/sbin/nginx -V 2>&1 |grep SNI

    如果有TLS SNI support enabled就表示支持SNI

    配置nginx

    修改nginx安装后的conf/nginx.conf文件

    以下是我的server配置节

    upstream backend {
    server 127.0.0.1:8443;
    }
    
    server {
            listen  443 ssl http2;
            server_name mytest.com;
            ssl_protocols SSLv3 TLSv1.2 TLSv1.1 TLSv1 SSLv2;
            access_log logs/proxy_access.log main;
            error_log logs/error.log info;
            underscores_in_headers on;
            
     
    
            location / {
    #针对源点使用https+SNI,需要下面两段
                proxy_ssl_server_name on;
                prox_ssl_name $host;
    #proxy_ssl_verify默认是off的,如果是on,源点的证书必须是正确的
                proxy_ssl_verify off;
                proxy_pass https://backend;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header cookie $http_cookie;
                proxy_set_header Proxy-Connection "";
                proxy_http_version 1.1;
            }
        }

    最重要的就是

                proxy_ssl_server_name on;
                prox_ssl_name $host;

    以上配置,注意以下几点:

    1、proxy_pass 后面是upstream中设置的后端源点

    2、建议不要设置proxy_ssl_verify 因为默认是off,如果配置了on,请确保你的源服务器中有正确的SSL证书,不能造假

    3、这三个是一定要加的

    proxy_set_header Host $http_host;
    proxy_set_header Proxy-Connection "";
    proxy_http_version 1.1;

    这两个也是要加的
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

    4、处理源点是开启 https + SNI 的,最关键的两段
    proxy_ssl_server_name on;
    prox_ssl_name $host;

    重启nginx

    一些参考资料:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_name

    一些参考资料:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_ssl_server_name

    一些不重要的参考资料:https://www.jianshu.com/p/999ac06e3934 

  • 相关阅读:
    SPA项目开发之登录
    使用vue-cli搭建SPA项目
    ElementUI入门和NodeJS环境搭建
    struts文件上传
    Struts增删改查
    struts
    Maven
    easyui三
    EasyUi权限
    自定义MVC三
  • 原文地址:https://www.cnblogs.com/faberbeta/p/nginx012.html
Copyright © 2020-2023  润新知