最近,JBolt开发平台用户在部署自己项目的时候,使用Nginx做映射,自己去配置的时候,遇到了登录跳转和session cookie失效的问题。
最终原因是Nginx在映射域名和对应的jfianl项目是没有将Proxy设置全。
之前,我录制过一个视频教程,专门讲解JFinal+nginx+undertow去绑定域名,多端口,多项目映射部署。
教程地址:http://www.jfinal.com/share/1625
其中就提到了Nginx映射问题:在这里再贴出来
server { listen 80; server_name demo.jbolt.cn; #charset koi8-r; #access_log logs/host.access.log main; location / { proxy_pass http://127.0.0.1:8082; proxy_connect_timeout 300s; proxy_send_timeout 900; proxy_read_timeout 900; proxy_buffer_size 32k; proxy_buffers 4 64k; #proxy_buffering off; proxy_busy_buffers_size 128k; proxy_redirect off; proxy_hide_header Vary; proxy_set_header Accept-Encoding ''; proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } #error_page 404 /404.html; # redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } }
其中,这一块儿就是问题所在:
proxy_set_header Referer $http_referer; proxy_set_header Cookie $http_cookie; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
在Nginx映射转发后,cookie session保持住 后端handler去获取真实过来的IP URL 都可以了。
如果各位部署后遇到无法登陆,或者登陆后没法保持cookie session ,或者配置https后 有些资源失效问题,都可以nginx的配置上调整。
如果是https的话,需要设置这个属性:
proxy_set_header X-Forwarded-Proto https;
【资源推荐】
JFinal新版sql模板有两种Template的调用方式,你学会了吗?
【系统介绍与演示】
JBolt1.8发布,支持模板指令Html标签外加Bootstrap代码提示,甚爽!
【视频教程】基于JFinal-undertow的项目打包与部署(linux centos7)
有问题咨询,加我微信:
mumengmeng