0

我正在尝试实现一个 nginx 服务器作为访问我的 Gogs 实例的反向代理。原因是我需要从工作中访问我的服务,除了标准端口之外的所有端口都被阻止。为了避免我的服务器上的端口冲突,大多数服务都在 >1000 的端口上运行(就此而言,Gogs 也是,默认为 3000)。所以我创建了自己的虚拟主机配置来重定向到 Gogs。我得到了普通的 html 网站,但错误显示加载图像和脚本时出现错误。似乎 Gogs 本身将客户端重定向到多个子资源,例如 /js、/img、/asset 和 /user。然后,我将 /js 和 /img 路径作为位置添加到我的 nginx 配置中并让站点运行。但是,这似乎需要做很多工作,要跟踪和配置所有这些路径。

Gogs 和 nginx 实例在同一台服务器上运行,重定向是通过 ip 配置的,没有使用 localhost 或 127.0.0.1 之类的环回,即使我尝试过但没有成功。

提前感谢您的帮助,并在下面找到我的配置。RMG PS:我检查了不同的教程和问题,包括这个 stackoverflow 问题

server {
        listen 80 default_server;
        server_name devsrv;
        
        #this redirect to another server on port 80 works fine
        location /nextcloud {
                proxy_pass http://OTHERIP/nextcloud;
        }

        location /gogs/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://LOCALIP:3000/;
        }
        # gogs script location
        location /js {
                proxy_pass http://LOCALIP:3000/js;
        }
        # gogs image location
         location /img {
                proxy_pass http://LOCALIP:3000/img;
        }

}

4

1 回答 1

0
server {
        listen 80 default_server;
        server_name devsrv;

        #this redirect to another server on port 80 works fine
        location /nextcloud {
                proxy_pass http://OTHERIP/nextcloud;
        }

        location /gogs/ {
                proxy_set_header X-Real-IP $remote_addr;
                proxy_pass http://LOCALIP:3000/;
        }
        location / {
                proxy_pass http://LOCALIP:3000$request_uri;
        }


}

设置所有需要使用特殊参数处理的特定 url(/gogs 或/nextcloud 上的 X-Real-IP 到其他 ip)并使用 $request_uri 将所有其他 URL 发送到 gogip。

/js? 本地语言:3000/js

/img ? 本地化:3000/img

一切都会走上它自己到达的道路。

如果您只想将来自 gogs 的连接发送到 REALIP(我假设从 gogs 发送的那些重定向来自 REALIP ),您可以制作另一个括号集,这样您就可以:

server {
        listen REALIP:80 default_server;
        server_name devsrv;

        #this redirect to another server on port 80 works fine
        location / {
                proxy_pass http://REALIP:3000$request_uri;
        }
}

希望我有所帮助。

于 2018-11-29T17:17:41.043 回答