nginx 代理proxy_pass问题

aabbabababaa 2018-04-04 06:15:36
worker_processes  1;

events {
worker_connections 1024;
}


http {
include mime.types;
default_type application/octet-stream;

sendfile on;

keepalive_timeout 65;


server {
listen 80;
server_name www.test.net;


#charset koi8-r;


#access_log logs/host.access.log main;
location / {
proxy_pass http://192.168.1.8;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

server {
listen 80;
server_name blog.test.net;


#charset koi8-r;


#access_log logs/host.access.log main;
location / {
proxy_pass http://192.168.1.8/blog/;
# proxy_redirect http://192.168.1.8/blog/ http://192.168.1.8/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

server {
listen 80;
server_name bbs.test.net;


#charset koi8-r;


#access_log logs/host.access.log main;
location / {
proxy_pass http://192.168.1.8:8888/bbs2/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}

}

}



www域名正常,后面两个blog,bbs 域名跳转不正常的,请教下各位大佬。。。
...全文
1081 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
aabbabababaa 2018-07-13
  • 打赏
  • 举报
回复
引用 17 楼 u010423904 的回复:
这个是我的Nginx日志,你看下是不是你想要的.用的就是我给的方法

代理前

[2018-07-13T20:30:58+08:00] 192.168.0.1 192.168.0.140 "GET /?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000
[2018-07-13T20:31:24+08:00] 192.168.0.1 192.168.0.140 "GET /dir1/dir2/file?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.001" 0.001
[2018-07-13T20:31:33+08:00] 192.168.0.1 192.168.0.140 "GET /dir1/file?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000
[2018-07-13T20:31:40+08:00] 192.168.0.1 192.168.0.140 "GET /file?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.001" 0.001
[2018-07-13T20:31:43+08:00] 192.168.0.1 192.168.0.140 "GET / HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000
[2018-07-13T20:33:04+08:00] 192.168.0.1 192.168.0.140 "GET /?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000


代理后
[2018-07-13T20:30:58+08:00] 192.168.0.140 192.168.0.140 "GET /blog/?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.001
[2018-07-13T20:31:24+08:00] 192.168.0.140 192.168.0.140 "GET /blog/dir1/dir2/file?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:31:33+08:00] 192.168.0.140 192.168.0.140 "GET /blog/dir1/file?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:31:40+08:00] 192.168.0.140 192.168.0.140 "GET /blog/file?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:31:43+08:00] 192.168.0.140 192.168.0.140 "GET /blog/ HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:33:04+08:00] 192.168.0.140 192.168.0.140 "GET /blog/?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000

是啊,可是奇怪我的日志是显示"GET /blog/blog/?a=b HTTP/1.0" 404
12ers_梦骑士 2018-07-13
  • 打赏
  • 举报
回复
这个是我的Nginx日志,你看下是不是你想要的.用的就是我给的方法


代理前

[2018-07-13T20:30:58+08:00] 192.168.0.1 192.168.0.140 "GET /?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000
[2018-07-13T20:31:24+08:00] 192.168.0.1 192.168.0.140 "GET /dir1/dir2/file?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.001" 0.001
[2018-07-13T20:31:33+08:00] 192.168.0.1 192.168.0.140 "GET /dir1/file?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000
[2018-07-13T20:31:40+08:00] 192.168.0.1 192.168.0.140 "GET /file?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.001" 0.001
[2018-07-13T20:31:43+08:00] 192.168.0.1 192.168.0.140 "GET / HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000
[2018-07-13T20:33:04+08:00] 192.168.0.1 192.168.0.140 "GET /?a=b HTTP/1.1" 404 162 "-" "curl/7.29.0" "-" "192.168.0.140:7777" "0.000" 0.000


代理后
[2018-07-13T20:30:58+08:00] 192.168.0.140 192.168.0.140 "GET /blog/?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.001
[2018-07-13T20:31:24+08:00] 192.168.0.140 192.168.0.140 "GET /blog/dir1/dir2/file?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:31:33+08:00] 192.168.0.140 192.168.0.140 "GET /blog/dir1/file?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:31:40+08:00] 192.168.0.140 192.168.0.140 "GET /blog/file?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:31:43+08:00] 192.168.0.140 192.168.0.140 "GET /blog/ HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000
[2018-07-13T20:33:04+08:00] 192.168.0.140 192.168.0.140 "GET /blog/?a=b HTTP/1.0" 404 162 "-" "curl/7.29.0" "192.168.0.1" "-" "-" 0.000

aabbabababaa 2018-07-13
  • 打赏
  • 举报
回复
引用 15 楼 u010423904 的回复:
尴尬...还是不明白你的需求
我举的这三个例子是同一种
你用文字描述需求结合你想要的到的结果描述一下吧
还可以描述一下 "目录还是不对,还是多了/blog一层目录" 是什么问题.
把 原url\结果url(错误的)\想要的url 这三个发出来.
比如:
blog.test.net/abc/123?a=1&b=2 想要得到什么结果
blog.test.net/?a=1&b=2 想要得到什么结果


blog.test.net/abc/123?a=1&b=2 ===>192.168.1.8/blog/abc/123?a=1&b=2
blog.test.net/?a=1&b=2 ===>192.168.1.8/blog/?a=1&b=2

就是访问http://blog.test.net,会反向代理访问到http://192.168.1.8/blog/这层目录
现在问题是访问到了http://192.168.1.8/blog/blog/ 错误目录
12ers_梦骑士 2018-07-12
  • 打赏
  • 举报
回复
引用 12 楼 ojc8882003 的回复:
[quote=引用 11 楼 u010423904 的回复:]
需要先rewrite,再proxy_pass

server {
listen 80;
server_name blog.test.net;

rewrite /(.*) /blog/$1;

location / {
proxy_pass http://192.168.1.8;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}


目录还是不对,还是多了/blog一层目录[/quote]

你的需求我这样理解对不对,将原请求的uri加上 /blog 前缀,然后代理到 192.168.1.8
如果你觉得不对的话麻烦描述一下的需求
例子:
blog.test.net/abc/123?a=1&b=2 ===> 192.168.1.8/blog/abc/123?a=1&b=2

blog.test.net/blog/123?a=1&b=2 ===> 192.168.1.8/blog/blog/123?a=1&b=2

blog.test.net/?a=1&b=2 ===> 192.168.1.8/blog/?a=1&b=2
12ers_梦骑士 2018-07-12
  • 打赏
  • 举报
回复
尴尬...还是不明白你的需求
我举的这三个例子是同一种
你用文字描述需求结合你想要的到的结果描述一下吧
还可以描述一下 "目录还是不对,还是多了/blog一层目录" 是什么问题.
把 原url\结果url(错误的)\想要的url 这三个发出来.
比如:
blog.test.net/abc/123?a=1&b=2 想要得到什么结果
blog.test.net/?a=1&b=2 想要得到什么结果
aabbabababaa 2018-07-12
  • 打赏
  • 举报
回复
引用 13 楼 u010423904 的回复:
[quote=引用 12 楼 ojc8882003 的回复:]
[quote=引用 11 楼 u010423904 的回复:]
需要先rewrite,再proxy_pass

server {
listen 80;
server_name blog.test.net;

rewrite /(.*) /blog/$1;

location / {
proxy_pass http://192.168.1.8;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}


目录还是不对,还是多了/blog一层目录[/quote]

你的需求我这样理解对不对,将原请求的uri加上 /blog 前缀,然后代理到 192.168.1.8
如果你觉得不对的话麻烦描述一下的需求
例子:
blog.test.net/abc/123?a=1&b=2 ===> 192.168.1.8/blog/abc/123?a=1&b=2

blog.test.net/blog/123?a=1&b=2 ===> 192.168.1.8/blog/blog/123?a=1&b=2

blog.test.net/?a=1&b=2 ===> 192.168.1.8/blog/?a=1&b=2[/quote]


blog.test.net/?a=1&b=2 ===> 192.168.1.8/blog/?a=1&b=2

第三种
aabbabababaa 2018-07-11
  • 打赏
  • 举报
回复
引用 11 楼 u010423904 的回复:
需要先rewrite,再proxy_pass

server {
listen 80;
server_name blog.test.net;

rewrite /(.*) /blog/$1;

location / {
proxy_pass http://192.168.1.8;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}


目录还是不对,还是多了/blog一层目录
12ers_梦骑士 2018-07-10
  • 打赏
  • 举报
回复
需要先rewrite,再proxy_pass

server {
listen 80;
server_name blog.test.net;

rewrite /(.*) /blog/$1;

location / {
proxy_pass http://192.168.1.8;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
海阔天空真 2018-06-25
  • 打赏
  • 举报
回复
你把最后一个斜杠'/'去掉再试一试。例如:
proxy_pass http://192.168.1.8/blog;
aabbabababaa 2018-06-25
  • 打赏
  • 举报
回复
引用 9 楼 tzk117 的回复:
你把最后一个斜杠'/'去掉再试一试。例如:
proxy_pass http://192.168.1.8/blog;


试过了,不行
aabbabababaa 2018-05-13
  • 打赏
  • 举报
回复
引用 7 楼 wenw 的回复:
[quote=引用 5 楼 ojc8882003 的回复:] [quote=引用 4 楼 fzq194220134 的回复:] proxy_pass http://192.168.1.8/blog/; proxy_pass 里面不允许写域名以外的其他 你可以改成这样 rewrite ^/(.*) http://192.168.1.8/blog/$1 break; #location / { #proxy_pass http://192.168.1.8; #proxy_set_header Host $host; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # }
rewrite可以做反向代理的?[/quote] 当然可以了。[/quote] 目录也没对,还是到根目录,没到blog目录。。。
wenw 2018-05-11
  • 打赏
  • 举报
回复
引用 5 楼 ojc8882003 的回复:
[quote=引用 4 楼 fzq194220134 的回复:] proxy_pass http://192.168.1.8/blog/; proxy_pass 里面不允许写域名以外的其他 你可以改成这样 rewrite ^/(.*) http://192.168.1.8/blog/$1 break; #location / { #proxy_pass http://192.168.1.8; #proxy_set_header Host $host; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # }
rewrite可以做反向代理的?[/quote] 当然可以了。
wenw 2018-05-11
  • 打赏
  • 举报
回复
引用 1 楼 u011075572 的回复:
多个server 里面的listen不可以监听同一个80端口吧
只要指定了不同的server_name,就可以侦听同一个端口。
aabbabababaa 2018-05-05
  • 打赏
  • 举报
回复
引用 4 楼 fzq194220134 的回复:
proxy_pass http://192.168.1.8/blog/; proxy_pass 里面不允许写域名以外的其他 你可以改成这样 rewrite ^/(.*) http://192.168.1.8/blog/$1 break; #location / { #proxy_pass http://192.168.1.8; #proxy_set_header Host $host; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # }
rewrite可以做反向代理的?
SNakeCCAuo 2018-04-13
  • 打赏
  • 举报
回复
proxy_pass http://192.168.1.8/blog/; proxy_pass 里面不允许写域名以外的其他 你可以改成这样 rewrite ^/(.*) http://192.168.1.8/blog/$1 break; #location / { #proxy_pass http://192.168.1.8; #proxy_set_header Host $host; #proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; # }
Mrym 2018-04-13
  • 打赏
  • 举报
回复
引用 2 楼 ojc8882003 的回复:
[quote=引用 1 楼 u011075572 的回复:] 多个server 里面的listen不可以监听同一个80端口吧
这个叫基于域名的虚拟主机(name based virtual host),配置的方法就是多个虚拟主机绑定同一个端口,通过server_name区分 可以吧[/quote]嗯嗯,那应该是可以的。
Mrym 2018-04-12
  • 打赏
  • 举报
回复
多个server 里面的listen不可以监听同一个80端口吧
aabbabababaa 2018-04-12
  • 打赏
  • 举报
回复
引用 1 楼 u011075572 的回复:
多个server 里面的listen不可以监听同一个80端口吧
这个叫基于域名的虚拟主机(name based virtual host),配置的方法就是多个虚拟主机绑定同一个端口,通过server_name区分 可以吧

25,985

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧