nginx 反向代碼後,驗證碼不顯示

問題描述:A服務做反向代碼服務器,需求是代碼B的訪問,配置完成後,驗證碼沒有顯示

nginx 配置如下:

##http 代碼段
upstream reports{
    server B服務IP加端口 weight=4 max_fails=2 fail_timeout=30s;
    ip_hash;
}



server {
    listen 80;
    server_name **;   //A服務IP   
    location /report {
       proxy_pass http://reports;
       proxy_next_upstream http_502 http_504 http_404 error timeout invalid_header;
       proxy_set_header X-Forwarded-For $remote_addr;
       proxy_set_header Host $host:$server_port;
       proxy_connect_timeout 300s;
       proxy_send_timeout 300s;
       proxy_read_timeout 300s;
       proxy_http_version 1.1;

     }

初次配置如上,驗證碼無法訪問。

查看驗證碼的訪問方式

是BASE64編碼,前臺獲取到編碼後,再轉圖片。此時的路徑是 B服務IP/api**,而不是B服務IP/report*,所以無法請求到對應編碼,方法調用不通。查看nginx 錯誤日誌也可以發現此問題。

2020/05/12 14:26:10 [error] 21601#0: *150 open() "/usr/local/nginx/api/app/b/v1/user/login/get/image/code" failed (2: No such file or directory), client: 10.25.11.10, server: B服務IP, request: "GET /api/app/b/v1/user/login/get/image/code?_t=1589264769 HTTP/1.1", host: "B服務IP", referrer: "B服務IP/report/"

因爲nginx中沒有配置B服務/api*  ,所以NGINX在本地查找相關文件,是找不到的。

所以只需要在配置中新增一個B服務/api*的訪問代碼即可。

 location /api {
        proxy_redirect off;
    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_pass B服務IP加端口;
    }

至此,問題解決。

注:本地文件代理;root和alias 遠程代理:proxy_pass

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章