Nginx反向代理http和https

博主在前天帮@小石 用本博客的渣服务器反代加速他的个人简介时,发现了配置文件一些地方是比较容易出错的,但是网上的教程大多没有讲出来 正所谓的互相爬虫 :eek: ,特此开一篇文章与大家分享下 :mrgreen:

反代http配置

server{
        listen 80; #监听的端口号
        server_name blog.cannon.org.cn;#主机名,根据自己的需要修改
        location / {
        proxy_pass http://xs314.gitee.io/;#反代的网站,http不要写出https
        }
}

http的反代配置没有什么地方是容易出错的,这里就不多说了

反代https配置

server {
    listen       443; #https监听的端口号
    server_name  blog.cannon.org.cn;#主机名,根据自己需要修改


    ssl                  on;#开启https的开关
    ssl_certificate      /usr/local/nginx/conf/ssl/blo.cannon.org.cn.crt;
    #https证书路径
    ssl_certificate_key  /usr/local/nginx/conf/ssl/blo.cannon.org.cn.key;
    #https密钥路径


    ssl_session_timeout  5m;#https握手超时时间
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;#启用的TLS版本    
    ssl_ciphers     ECDHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-RSA-AES256:AES128-SHA:AES256-SHA:RC4-SHA:DES-CBC3-SHA:RC4-MD5; #启用的ssl加密套件
    ssl_prefer_server_ciphers   on;
    proxy_http_version 1.1;
    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;


    location / { 
    proxy_set_header X-Real-IP $remote_addr; 
    proxy_set_header Host "xs314.gitee.io"; #向源站返回的SNI,修改为你要反代的网站的域名
    proxy_set_header X-Protocol https; 
    proxy_http_version 1.1; #向源站请求资源时使用的http版本
    proxy_buffering off; #缓存开关
    proxy_ssl_server_name on; #反代时向源站返回SNI名称
    proxy_pass https://180.97.125.228:443; #源站地址,必须写https
    }
}

好了,到了https配置这一步,“proxy_pass”、“proxy_ssl_server_name”和“proxy_set_header”这三项配置非常容易出错,或者没加上去,只要少了其中一项,你访问你的反代服务器,都会返回502。 :eek:

特别是“proxy_pass”这一项,只能写IP地址,不能写域名,就算你用upsteam{}在前面声明了这个域名的地址、能正常启动,访问服务器得到的也只是502;你写完IP地址后,端口号是可选的,可加可不加  :mrgreen:


The End

发表评论

电子邮件地址不会被公开。 必填项已用*标注