请教一个 nginx 的端口转发问题

2021-08-02 15:03:29 +08:00
 weichengwu

前言

本人是一个不懂后端的 iOS 开发,对 nginx 略知一二,知道它是做反向代理的,知道在哪改 nginx.conf,知道改完怎么 reload

问题描述

现有一太内网机器,领导帮我配置了一个可外网访问的域名,并用 nginx 配置了一个 ssl 证书,端口是 8088 ;

我用 docker 部署了一个服务,暴露的端口是 3000 。

现在希望能将 3000 端口映射到 8088 端口的一个路径下,比如 https://xxx.com:8088/yyy,从而实现外网能访问 3000 端口的目的。

网络上搜索了几个结果,但都没有效果,现在的配置:

location /yyy/ {
    proxy_set_header        Host $http_host;
    proxy_set_header        X-Real-IP $remote_addr;
    proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header        X-Forwarded-Proto $scheme;

    proxy_pass http://0.0.0.0:3000/;
}

现在能实现的效果是能进首页,但是无法加载 css/js 等资源文件,提示 404,但是我不知道该怎么改了。

3208 次点击
所在节点    NGINX
29 条回复
cpstar
2021-08-02 22:23:32 +08:00
相对路径、绝对路径
看到问题,猜了大概,看到 6#确定了猜测。
但是解决这个问题,很大情况下源头不太好修改——因为如果他容易修改的话,他就不会用绝对路径这个 SB 的策略了——于是解决办法很有可能需要挨个 URL 做反代。

然后不知道 proxy_reverse

另外,location 最好用 2#的匹配,当然写你那样也没啥问题。然后结尾斜杠的问题,保持统一,要有都有,要没有都没有,/xxx 和 /xxx/是两个 URL 。
tqyq88
2021-08-02 22:25:01 +08:00
不用改路径,加一行 rewrite /yyy/(.*) /$1 break;
weichengwu
2021-08-02 22:36:40 +08:00
感谢楼上各位的回复,今天下午一直在开会,明天去公司一一尝试。
weichengwu
2021-08-02 22:37:27 +08:00
感觉主要还是不懂 nginx 的工作方式,但是仅仅为了配置一个服务把 nginx 整个过一遍太吃精力了 😂
awker
2021-08-02 22:49:08 +08:00
可以参考:Nginx proxy_pass 后出现部分请求 404 的解决办法 https://www.jianshu.com/p/55bfbba45fed
AoEiuV020
2021-08-03 09:13:09 +08:00
@v2clay 你这是在讲什么,#6 楼日志看了没有,问题就是 uri 里没有 yyy,到你这里还 uri 里多了一个 yyy,
要匹配的就是 /yyy/xx.js 才能被匹配反代到内网 /xx.js ,
Chieh
2021-08-03 13:14:38 +08:00
$http_host 试试 https://xxx.com:8088/
abccccabc
2021-08-05 19:19:22 +08:00
楼主,解决了没有?最终答案是什么?
weichengwu
2021-08-25 18:23:07 +08:00
@abccccabc #28 解决了哈,路径的方式没走通,换多级域名了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/793160

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX