nginx 反向代理
前言
前面的理论知识点已经写下,下面介绍实践。
正文
宝塔分析
介绍反向代理,我先介绍看下我的思路。
先给介绍一下宝塔的代理。
宝塔默认配置了:
这个是正向代理。
至于nginx如何配置php,在此我就不介绍了。
那么来看下我配置的反向代理,看下里面的不同。
宝塔下面的配置有这么一段话:
include /www/server/panel/vhost/nginx/*.conf;
其实我们正规配置的时候就是会将conf这种东西分离开来。
好的,那么我们找到目录。
我用我在改目录下配置的一个文件示例:
上面是什么意思呢?是监听80端口,且访问域名为我的子域名,那么就进入该配置。
看下该配置的反向代理是什么。
那么该反向代理又在其他的文件里面,我们继续找到。
#PROXY-START/ location / { expires 12h; if ($request_uri ~* "(php|jsp|cgi|asp|aspx)") { expires 0; } proxy_pass http://127.0.0.1:12000; 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_set_header REMOTE-HOST $remote_addr; #持久化连接相关配置 #proxy_connect_timeout 30s; #proxy_read_timeout 86400s; #proxy_send_timeout 30s; #proxy_http_version 1.1; #proxy_set_header Upgrade $http_upgrade; #proxy_set_header Connection "upgrade"; add_header X-Cache $upstream_cache_status; #Set Nginx Cache add_header Cache-Control no-cache; } #PROXY-END/
上面是我代理的配置。
proxy_pass http://127.0.0.1:12000;
将代理请求转到12000,这里。
也就是本来我们访问80的,但是呢,最后转移到了12000端口。
这就是反向代理。
tomcat反向代理分析
tomcat 你需要配置两个tomcat,tomcat在此就不介绍了。
我配置了两个端口,一个是8081,8080。
那么我要做的就是反向代理到他们的位置。
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> 我是a </body> </html>
我有两个个html,一个是上面的a.html,一个是"我是b",文件名是b.html,我分别放到两个tomcat上去。
那么我要实现的就是通过9090端口,访问到他们两个。
下面是我的配置:
server{ listen 9080; server_name www.9080.com; index index.html index.htm index.php; location ~ /a/ { proxy_pass http://127.0.0.1:8081; } location ~ /b/ { proxy_pass http://127.0.0.1:8080; } }
分别将9080端口转发到不同位置。
介绍一下:
server_name www.9080.com 表示域名。
注:
因为这个域名不是我的,但是我可以本地通过dns转发。
如果带a的那么就配置到http://127.0.0.1:8080,另个一个同理。
来看下效果:
最后来看一下:
location ~ /b/
~ /b/ 是正则表达。
当然还有其他的:
如:
= 严格匹配。如果这个查询匹配,那么将停止搜索并立即处理此请求。 ~ 为区分大小写匹配(可用正则表达式) !~为区分大小写不匹配 ~* 为不区分大小写匹配(可用正则表达式) !~*为不区分大小写不匹配 ^~ 如果把这个前缀用于一个常规字符串,那么告诉nginx 如果路径匹配那么不测试正则表达式。