使用nginx反向代理,验证码无法通过校验

去开原 发布于 2013/09/12 14:44
阅读 5K+
收藏 2

如题,我在做反向代理的时候发现使用jcaptcha的登录功能,无法正常校验验证码,总是没办法通过校验,请问有熟悉这一块的人才没?

上一下我nginx的配置

server {
        listen       85;
        #server_name  192.163.35.152;
        server_name  192.163.35.149;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;
        root   /home/upload/opt/appstore/upload;

        location / {
        root   /home/upload/opt/appstore/upload;
            index  index.html index.htm index.php;
        #proxy_pass http://192.163.35.152:8085/AppStore-Admin/;
        proxy_pass http://192.163.35.149:8080/AppStore-Admin/;
        proxy_redirect off;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }

        location ~* ^.*\.(jpg|jpeg|gif|png|swf|rar|zip|css|js)$ {
        root /usr/local/qgy/apa/webapps;
        #过期30天,静态文件不怎么更新,过期可以设大一点,如果频繁更新,则可以设置得小一点。
        expires 30d;
        }

以下是问题补充:

@第四维空间:我也遇到了相同的问题,调试发现当刷新验证码是,验证码放入的session不是用户登录时所访问的session,即用户登录时浏览器发送的session不变,而点击刷新验证码是,验证码放入的session每次都变,所以当登录时,验证码无法通过。而单独访问tomcat时则不会出现该问题。纠结了好久,仍没有解决…… 期待热心人指点迷津…… (2013/09/20 22:17)
加载中
0
panmingguang
panmingguang
校验和代理 按说没关系的, 不知道是不是 路径不对, 或者session 之类的问题
去开原
去开原
我也觉得和session相关,但是不知道哪儿有问题
0
pper
pper

expires 30d; 初步判断是这个原因,你把图片都缓存30天了,验证码也必然是图片,如果不更改服务器设置的话,你的验证码码图片地址可以加个随机码

<img src="http://xxxxx/x.png?rand JS or PHP" />

IdleMan
IdleMan
回复 @去开原 : <img src="http://xxxxx/x.png?rand JS or PHP&haha=v.png" />
去开原
去开原
我的验证码图片不是jpg结尾,不在后一个配置的过期范围内
0
0
panmingguang
panmingguang
验证吗图片 应该动态生成的, 无所谓格式的问题
0
iSea
iSea
要是验证码有问题打印出来对比一下不就知道了么
0
去开原
去开原
刚才调试了一下,发现使用nginx反向代理的时候,服务端接收到的sessionid与浏览器发送的sessionid不一样,这样导致验证码无效
去开原
去开原
因为使用反向代理暂时登录不上,所以还没试到你说的那种情况,不过应该是这种效果
IdleMan
IdleMan
不会吧,如此的话,那登陆的用户也可能显示没登陆了
返回顶部
顶部