Обратный прокси Nginx для Gogs - PullRequest
0 голосов
/ 28 ноября 2018

Я пытаюсь реализовать сервер nginx в качестве обратного прокси для доступа к моему экземпляру Gogs.Причина в том, что мне нужен доступ к моим услугам с работы, где заблокированы все порты, кроме стандартных.Чтобы избежать конфликтов портов на моем сервере, большинство серверов работают на портах> 1000 (и, в этом отношении, Gogs тоже по умолчанию 3000).Поэтому я создал свою собственную конфигурацию vhost для перенаправления в Gogs.Я получаю простой HTML-сайт, но ошибки, показывающие ошибки при загрузке изображений и скриптов.Кажется, что Gogs сам перенаправляет клиентов к нескольким подисточникам, например / js, / img, / asset и / user.Затем я добавил пути / js и / img в качестве местоположения в мою конфигурацию nginx и запустил сайт.Тем не менее, это кажется довольно трудоемким делом, отслеживая и настраивая все эти пути.Есть ли способ для меня, чтобы обслуживать эти пути к клиенту через nginx без необходимости настраивать их один за другим?

Экземпляры Gogs и nginx работают на одном сервере, перенаправление настроено через ip, нетloopback, как 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;
        }

}

1 Ответ

0 голосов
/ 29 ноября 2018
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, которые должны обрабатываться с помощью специальных параметров (X-Real-IP on / gogs или / nextcloud для другого ip) и отправьте все остальные для gogip с $ request_uri.

/ JS?LOCALIP: 3000 / JS

/ IMG?LOCALIP: 3000 / img

Все пойдет по собственному пути, который прибыл.

Если вы хотите отправлять REALIP только те соединения, которые приходят из gogs (я предполагаю, что перенаправления, отправленные с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;
        }
}

Надеюсь, я помог.

...