Nginx 反代理后验证码无法访问

4 篇文章 0 订阅
3 篇文章 0 订阅

系统登录时很多都需要验证码,对于简单的系统来说,都部署在同一台服务器上,问题也不大。但如果使用Nginx反代理时,会发现一个问题,验证码打不开了,提示错误代码是404 。因为验证码是图片流,并不是静态的图片文件,所以参照网上各种关于图片静态资源访问配置都不能解决这样的问题。 其实呢,这个问题很简单,也不需要做额外的配置,只需要把server_name和要映射要的内网IP和端口或目标IP和端口就OK了,我是这样解决的。

这里有一配系统,一台对外访问的前端Web服务器,两台数据库服务器,一台Web后台API服务器,结构如下图所示:

假如Api的Web上下文是  /Api/

这时注意,Nginx 配置(这不是他的主配置文件,本文件放在 nginx 的配置目录 ./conf/vhost/下即可)如下:

server{
    listen 80;
    server_name 121.x.x.x;


  location  ~ /api/ {

        proxy_pass http://192.168.1.11:10000;
  }
 

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js)$
    {
        expires      30d;
    }

    location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|js)$
    {
                root   /home/wwwroot/apis/;
                expires      30d;
                autoindex on;
                error_log off;
                access_log off;
    }



    location ~ /static/img/.*\.(gif|jpg|jpeg|png|bmp|swf)$
    {
                root   /home/wwwroot/apis/static/img/;
                expires      30d;
                autoindex on;
                error_log off;
                access_log off;
    }


    location ~ .*\.(js|css)?$ {
      expires 7d;
      access_log off;
    }

    location ~ /\.
    {
        deny all;
    }


}

 

这里特别要注意是 server_name ,如果是IP访问,直接设置为 当前服务器的公网IP ,如果域名的话,则用该服务器的访问的域名作为server_name即可。

这样配置好后就可以直接访问由Api Server1生成的验证码图片了。如果要使两台Api server 都生效,需要配置upstream 作为负载均衡,这里不做表述了,网上有很多相关的配置。

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值