1,实验环境
Client(192.168.13.254)---------主机A(192.168.13.132)----------------主机B(192.168.13.131)
2,状态:
Client:一台Windows主机,安装有谷歌浏览器
主机A:一台Linux主机,安装CentOS6.8操作系统.安装Nginx.配置反向代理
[root@CentOS-1 ~]# cat /usr/share/nginx/html/aa/proxy/bb/index.html
<h1>NGINX</h1>
[root@CentOS-1 ~]# cat /etc/nginx/conf.d/default.conf | grep -v "^$" | grep -v " "*#
server {
listen 80;
server_name localhost;
location /proxy/ {
proxy_pass http://192.168.13.131/;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
主机B:一台Linux主机,安装CentOS6.8操作系统.安装httpd.
[root@CentOS-1 ~]# cat /var/www/html/index.html
<h1>Apache</h1>
3.问题:反向代理不起作用
server_name localhost;
,主机名只绑定了localhost,通过localhost访问才起作用。如果要使用IP,需要在server_name中添加IP地址
你好!谢谢你的帮助.我已经按照你的来修改了主机A的配置文件,配置文件如下:
[root@CentOS-1 ~]# cat /etc/nginx/conf.d/default.conf | grep -v "^$" | grep -v " "*#
server {
listen 80;
server_name 192.168.13.132;
location /proxy {
proxy_pass http://192.168.13.131/;
}
location / {
root /usr/share/nginx/html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
}
效果:
@LWCUIG: 你只反向代理了location /proxy
,没有反向代理location /
@dudu: 对的,我的想法是当客户端访问"/proxy"目录下的内容的时候,代理到主机B上.
@LWCUIG: 您测试时访问的是路径是/aa/proxy
@dudu: 我测试的时候,访问的路径是"/aa/proxy/bb/".
@dudu: 你好,我觉得我的Location没有被匹配到.不知道是不是我的匹配有问题.
[root@CentOS-1 ~]# tail -1 /var/log/nginx/access.log
192.168.13.254 - - [10/Mar/2018:22:40:32 +0800] "GET /aa/proxy/bb/index.html HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36" "-"
@LWCUIG: 把 location /proxy/
改为 location ~ /proxy/
试试
@LWCUIG: location /proxy/
只能匹配以/proxy/
开头的路径
@dudu: 你好.我使用location .*/proxy/.*来匹配的话.就是在访问Nginx服务器了.而没有进行反向代理.我感觉只能匹配开头的那些目录.如:/aa/.一个URL:http://192.168.13.132/AA/BB/CC/,就只能匹配一级目录(也就是AA).不知道这样理解是不是对的.