nginx 代理请求头与跨域

1 .问题1,使用nginx作为网关,服务端获取ip地址和servername为网关地址。

解决方案,在代理地址上添加请求头转发
		location / {
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Real-PORT $remote_port;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }			

2.问题2, 转发后显示前端跨域,而server端已配置了跨域请求

解决方案:因为开启了代理请求头,此请求将由nginx处理一次,所以在网关处需要处理options请求。
在代理地址添加如下请求头
        location / {
			proxy_set_header Host $host;
			proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Real-PORT $remote_port;
			proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
			
			add_header Access-Control-Allow-Origin *;
			add_header Access-Control-Allow-Headers *;
			add_header Access-Control-Allow-Methods *;
			add_header Access-Control-Allow-Credentials true;
			proxy_pass   http://127.0.0.1:8080;
        }

3. 问题3,配置了跨域请求后部分电脑访问报错:双跨域允许

解决方案:因为nginx缓存,所以之前访问过服务的的电脑为正常。新访问电脑在nginx和server端设置为双跨域,需要关闭nginx跨域请求头,而又与问题2冲突,则需直接添加ip地址及网关,最终版本

        location / {
			add_header Host $host;
			add_header X-Real-IP $remote_addr;
            add_header X-Real-PORT $remote_port;
			add_header X-Forwarded-For $proxy_add_x_forwarded_for;
			proxy_pass   http://127.0.0.1:8080;
        }

你可能感兴趣的:(后台,nginx,运维,服务器)