明明看上去好像没有错,可为啥不生效呢?琢磨了很久
1
zty7723271 OP server 部分的配置代码如下:
server{ listen 80; server_name test; location / { proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8088/gg; # proxy_redirect off; } } |
2
jdlau 2018-08-05 20:17:00 +08:00 via Android
nginx -t 看看
|
3
qcloud 2018-08-05 20:19:21 +08:00 via iPhone
svrver name 不对吧
|
4
zty7723271 OP 以上的代码有错吗?(好像没有对吧)
但是: 1.当我访问 http://118.24.117.188 的时候,可以显示 welcome to nginx, 却不能显示我跑在 http://118.24.117.188:8088/gg 的 springboot 404 页面 2.http://118.24.117.188:8088/gg/index 是一个 @RestController,会一句测试字符串返回 然而当我访问 http://118.24.117.188/index 的时候缺失 404 |
5
newghost 2018-08-05 20:21:27 +08:00
server name 应该是域名吧? 加个 default 对所有起作用?
|
6
isCyan 2018-08-05 20:22:13 +08:00
路径不对是吧,location 里面加一条
rewrite ^(.*)$ /gg$1 break; 然后把 proxy_pass 的 /gg 去掉试试 |
7
zty7723271 OP |
8
isCyan 2018-08-05 20:23:01 +08:00
|
9
coffeSlider 2018-08-05 20:24:10 +08:00 via Android
你不用 servername 却用 ip 请求,自然走不到你这个 server。
|
10
zty7723271 OP |
11
isCyan 2018-08-05 20:29:03 +08:00
@zty7723271 这是一个非常常见的新手错误……
nginx proxy pass 不会发送你写在后面的 path 的,只会发送当前实际 path 不然就要 rewrite 你可以看一下 proxy_pass 的文档 或者搜索 nginx proxy_pass rewrite |
12
zty7723271 OP 总结:确实是域名问题
|
13
isCyan 2018-08-05 20:32:00 +08:00
default server 的命令不是这样的,是在 listen 后面加 default_server。
如果你要 ip 访问的话,只要监听到了 ip,ip 访问到的就是 default_server 了,不需要单独配置。不然 ip 换了还要改配置。、 而且注意在网上发言不要泄露服务器 ip,防止被 ddcc ( V2EX 不能删贴) |
14
isCyan 2018-08-05 20:32:50 +08:00
你要是不 rewrite 即使域名对了也是一样 404/500
|
15
zty7723271 OP @isCyan 原来如此,我刚才试了下注释掉 rewrite (但是 proxy_pass 后面的 /gg 没有加上),可以访问。正如你所说的不会跳转到后面的 path。
然后又试了一下加上 /gg,结果不能访问 然而,server_name 也确实有问题,还是要设置 ip 域名的(我又试了把 server_name 改回之前的“ test ”,结果不行)。所以 server_name 确实要设置 ip 域名 |
16
zty7723271 OP @isCyan 噢,我又摸索了下 default_server 指令,可能我的具体操作有问题(记得之前改过另外某处的配置,加了 default_server 后启动报错 listen wrong param 0.0.0.0:80 之类的,最后没有加 default_server ),然后我调整了一下 rewrite -> rewrite ^/gg(.*)$ /gg$1 break; 总算可以用了 location /gg 了,身心释然
第一次发帖,再次感谢各位~ @jdlau @qcloud @newghost @coffeSlider @isCyan 总结: 错误 1:server_name 没有设置 ip (在 default_server 未设置成功的情况下需要配置 ip,default_server 待探索) 错误 2:location /gg 需要用 rewrite 来加工 url,否则会出现一些未知的问题(待探索) 最终配置如下: server{ listen 80; server_name 118.24.117.188; # server_name test; location /gg { rewrite ^/gg(.*)$ /gg$1 break; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_pass http://127.0.0.1:8088; # proxy_redirect off; } } |
17
akira 2018-08-06 00:21:41 +08:00
1L 的配置 , 这样修改试试
proxy_pass http://127.0.0.1:8088/gg; => proxy_pass http://127.0.0.1:8088/gg/; |
18
ancelli 2018-08-06 00:25:12 +08:00 via iPad
servername 改成 ip 然后用 ip 访问
|