server {
listen 9191;
server_name xxx;
location / {
root arcroomsys;
index index.html;
}
location /videos {
alias videos;
index index.html index.htm;
add_header 'Access-Control-Allow-Origin' '*';
add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS';
add_header 'Access-Control-Allow-Headers' 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range';
add_header 'Access-Control-Expose-Headers' 'Content-Length,Content-Range';
}
location /api {
proxy_pass http://192.168.0.118:8087/Room;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_cookie_path /Room /;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
proxy_cookie_path /Room /; #此处解决跨站请求Cookie丢失
原本在开发环境是ip+port即可成功,但是在生产环境部署时,因为多了一个项目名,导致cookie的path发生变化
上面这行作用是调整反向代理过程中的 Cookie 路径:proxy_cookie_path
指令用于调整被代理服务器返回的Set-Cookie
头中的路径信息。/Room
是被代理服务器上的路径(后端),而/
是代理服务器上的路径(前端)。
这个配置告诉 Nginx 在将Set-Cookie
头返回给客户端时,将路径中的/Room
替换为/。
经过 Nginx 反向代理后,这个配置会将
Path=/Room
中的/Room
替换为/
,使得最终返回给客户端的Set-Cookie
头为:
Set-Cookie: my_cookie=my_value; Path=/; HttpOnly