nginx转发http,websocket,https请求配置

一,转发http请求,编辑nginx配置文件nginx.conf,ubuntu一般在/ect/nginx/目录

       在nginx.conf的http模块加入:

upstream svr_login {
        server xxx.xxx.xxx.xxx:port;        #转发目的地址与端口,可以配置多个
}
server {
        listen 8800;        #本机监听端口
        server_name localhost;
        location ~*^.+$ {
            proxy_pass http://svr_login;        #svr_login即上面定义,名字自己定义,对应即可
            proxy_set_header X-Real-IP $remote_addr;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_set_header Host $host;
        }
}

/*
当Nginx设置X-Forwarded-For于$proxy_add_x_forwarded_for后会有两种情况发生:

1、如果从CDN过来的请求没有设置X-Forwarded-For头(通常这种事情不会发生),而到了我们这里Nginx设置将其设置为$proxy_add_x_forwarded_for的话,X-Forwarded-For的信息应该为CDN的IP,因为相对于Nginx负载均衡来说客户端即为CDN,这样的话,后端的web程序时死活也获得不了真实用户的IP的。

2、CDN设置了X-Forwarded-For,我们这里又设置了一次,且值为$proxy_add_x_forwarded_for的话,那么X-Forwarded-For的内容变成 ”客户端IP,Nginx负载均衡服务器IP“如果是这种情况的话,那后端的程序通过X-Forwarded-For获得客户端IP,则取逗号分隔的第一项即可。
*/

二,转发websocket请求,也是在nginx.conf的http模块加入:   

    upstream ws_game {
        server xxx.xxx.xxx.xxx:port;        #转发目的地址与端口
    }

    server {
        listen 8301;                                #本机监听端口
        server_name localhost;
        location / {                                   #匹配协议用/,有人使用/ws或/websocket,试了不成功
            proxy_pass http://ws_game;#转发目标
            proxy_redirect off;      
            proxy_set_header Host $host;
            proxy_set_header X-Real_IP $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr:$remote_port;
            proxy_http_version 1.1;
            proxy_set_header Upgrade $http_upgrade;   
            proxy_set_header Connection upgrade;
        }
    }

编辑好后

重加载配置:nginx -s reload

重启:nginx -s reopen

三,这里额外加个配置https说明,也是在nginx.conf的http模块加入:   



    # HTTPS server
	#
	server {
            # https监听端口,默认433,但如果是自己的个人主机,电信会封此端口,所以可以用其它端口,注意不要用被占用的端口
        	listen 6001 ssl;
            # 请填写绑定证书的域名
        	server_name tt.gz-cube.com;
            #请填写证书文件的相对路径或绝对路径
        	ssl_certificate /etc/nginx/sslkey/xxx.pem; #这里是ssl key文件存放的绝对路径,根据自己的文件名称和路径来写
        	ssl_certificate_key /etc/nginx/sslkey/xxx.key; #这里是ssl key文件存放的绝对路径,根据自己的文件名称和路径来写

        	ssl_session_cache shared:SSL:1m;
        	ssl_session_timeout 5m;
		
        	ssl_ciphers HIGH:!aNULL:!MD5;
        	ssl_prefer_server_ciphers on;

        	location / {
                    # 如果此服务是作转发用,配置转发地址,下面的网站主面路径就不要
                	#proxy_pass http://localhost:8080/;
                    
                    # 网站主页路径
                	root html;
                	index index.html index.htm;
        	}
	}

如果要监听/转发多个https端口请求,可以配置多个https server

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值