起因:今天企业部署一个项目,用的nginx做的反向代理,配置如下:

测试结果令人失望,IP:端口 能访问项目,域名:端口 也能访问 ,但是 域名/接口名 访问失败

##########################################################proxy_cache########################################################
proxy_cache_path /opt/proxy_temp levels=: keys_zone=imgcache:100m inactive=30d max_size=50g; upstream danny-web {
ip_hash;
server 192.168.1.150:;
server 192.168.1.151:;
check interval= rise= fall= timeout= default_down=true type=http;
} upstream QA-web {
ip_hash;
server 192.168.1.150:;
server 192.168.1.151:;
check interval= rise= fall= timeout= default_down=true type=http;
} server {
listen ;
server_name danny.com;
location ^~ /WEB-INF {
deny all;
} ##upstream status
location /upstream_status {
allow 192.168.0.0/;
deny all;
check_status;
access_log off;
} ##nginx status
deny all;
stub_status on;
access_log off;
} location / {
proxy_pass http://danny-web;
include /usr/local/nginx/conf/vhosts/proxy.conf;
} location ~ ^/(test)/ {
proxy_pass http://QA-web;
include /usr/local/nginx/conf/vhosts/proxy.conf;
} error_page /50x.html;
location /50x.html {
root html;
} }

注意:

nginx做反向代理时

    location ~ ^/(test)/ {
proxy_pass http://QA-web;
include /usr/local/nginx/conf/vhosts/proxy.conf;
}

中的test不能随便取,必须与后端访问接口请求接口名称一致

原因:client-->请求-->nginx-->proxy_pass-->upstream-->后端服务器项目(注意:问题就在这儿,nginx能把www.danny.com/test的请求发给后端服务器,但是,
如果后端代码没有这个test接口,就算请求到达了,后端如tomcat不知道这个请求是个什么玩意儿,会直接导致请求失败)

所以,这个test名还真不能随便取,必须nginx

能识别成功转发请求,后端服务器项目也得能识别这个请求才行,缺一不可。

企业项目测试总结经验

nginx反向代理proxy_pass的问题的更多相关文章

  1. nginx反向代理(proxy_pass)tomcat的过程中,session失效的问题解决

    Nginx反向代理tomcat,很是方便,但是也有些细节的问题需要注意:今天遇到了这样一个问题,tomcat中路径“host/web1”,nginx中直接“host/”代理,这时候session就无法 ...

  2. nginx 反向代理 proxy_pass 及对比nginx与haproxy反向代理服务器功能、性能的优劣

    1.使用 proxy 去请求另一个域名下的资源,如果跨域资源也部署在同一台机器上,我们甚至可以 proxy 到 127.0.0.1,比如: location /api { proxy_pass htt ...

  3. 【转】Nginx服务器的反向代理proxy_pass配置方法讲解

    [转]Nginx服务器的反向代理proxy_pass配置方法讲解 转自:http://www.jb51.net/article/78746.htm 就普通的反向代理来讲Nginx的配置还是比较简单的, ...

  4. nginx配置后端映射(反向代理proxy_pass)

    说明:配置反向代理proxy_pass和location无关,location后面加不加 / 都可以 1.配置 proxy_pass 时,当在后面的 url 加上了 /,相当于是绝对路径,则 Ngin ...

  5. 使用python自动生成docker nginx反向代理配置

    由于在测试环境上用docker部署了多个应用,而且他们的端口有的相同,有的又不相同,数量也比较多,在使用jenkins发版本的时候,不好配置,于是想要写一个脚本,能在docker 容器创建.停止的时候 ...

  6. Nginx反向代理,负载均衡,redis session共享,keepalived高可用

    相关知识自行搜索,直接上干货... 使用的资源: nginx主服务器一台,nginx备服务器一台,使用keepalived进行宕机切换. tomcat服务器两台,由nginx进行反向代理和负载均衡,此 ...

  7. Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离详解

    转载:http://freeloda.blog.51cto.com/2033581/1288553 大纲 一.前言 二.环境准备 三.安装与配置Nginx 四.Nginx之反向代理 五.Nginx之负 ...

  8. Nginx反向代理和负载均衡

    一.Nginx反向代理设置 从80端口转向其他端口反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的 ...

  9. nginx 反向代理

    nginx 反向代理 vim nginx.conf http { ..... upstream "tomcatweb" { server 172.30.13.199:8080; s ...

随机推荐

  1. EL表达式运算符使用

    EL表达式关系运算符的使用 == eq 等于 != ne 不等于 > gt 大于 < lt 小于 >= ge 大于等于 <= le 小于等于 举例说明 > 或者 gt, ...

  2. 002_浅析python 中__name__ = '__main__' 的作用

    很多新手刚开始学习python的时候经常会看到python 中__name__ = \'__main__\' 这样的代码,可能很多新手一开始学习的时候都比较疑惑,python 中__name__ = ...

  3. 微信硬件平台(八) 1 esp8266从自己的服务器获取token

    从txt获取token #include <ESP8266WiFi.h> #define host_token "www.dongvdong.top" #define ...

  4. 深度学习框架PyTorch一书的学习-第五章-常用工具模块

    https://github.com/chenyuntc/pytorch-book/blob/v1.0/chapter5-常用工具/chapter5.ipynb 希望大家直接到上面的网址去查看代码,下 ...

  5. QQ的ldw值计算方法

  6. IntelliJ IDEA(十一) :Debug的使用

    Debug模式是开发人员必会的一项调试程序的技能,用来追踪代码的运行流程,线上问题追踪,程序运行异常定位调试,以及在运行过程中参数的变化.IDEA的debug对于新手如何快速上手呢? 一.基本介绍 本 ...

  7. 持续集成之单元测试篇——WWH(讲讲我们做单元测试的故事)

    持续集成之单元测试篇--WWH(讲讲我们做单元测试的故事) 前言 临近上线的几天内非重大bug不敢进行发版修复,担心引起其它问题(摁下葫芦浮起瓢) 尽管我们如此小心,仍不能避免修改一些bug而引起更多 ...

  8. 《程序猿闭门造车》之NBPM工作流引擎 - 开篇

    自己动手,丰衣足食,花了几个周末的休息时间,写了一个轻量级工作流引擎,一来学习技术,二来陶怡情操,暂且命名为NBPM,欢迎围观~~~ 主要功能有: 基于浏览器的在线流程及表单设计 提供流程及表单数据版 ...

  9. 协程 IO多路复用

    -----------------------------------------------------------------试试并非受罪,问问并不吃亏.善于发问的人,知识丰富. # # ---- ...

  10. Python_每日习题-0008-九九乘法表

    题目: 输出9*9乘法口诀表. 程序分析:分行与分列的考虑,共9行9列,i控制行,j控制列. for i in range(1, 10): for j in range(1, i+1): print( ...