Назад | Перейти на главную страницу

Как сделать прокси на nginx?

Как мне настроить свои веб-серверы на работу, как описано ниже?

Я бы не хотел включать порты при вводе адреса в браузере, какой-то макет (прокси? / Squid?) На nginx. Оба домена указывают на мою машину и настроены по имени.

Вы не можете сделать это напрямую с DNS, поскольку DNS не работает с портами.

Вы можете использовать какую-либо форму проксирования на порту 80 для передачи запросов на порт 8080. Примером с apache может быть

<VirtualHost *:80>
    Servername contoso.com
    .
    .
    .
</VirtualHost>

<VirtualHost *:80>
    Servername apache.contoso.com
    ProxyRequests Off
    <Proxy *>
            Order deny,allow
            allow from all
    </Proxy>         
    ProxyPreserveHost On
    ProxyPass / http://contoso.com:8080/
    ProxyPassReverse / http://contoso.com:8080/     

</VirtualHost>

С помощью nginx вы можете сделать это, настроив два виртуальных сервера и proxy_pass, подключив один из них к Apache, работающему на порту 8080:

server {
    listen 80;
    server_name mypublic.com;
    ...
}

server {
    listen 80;
    server_name myprivate.com;

    location / {
        proxy_pass http://myprivate.com:8080;
    }
}

Смотрите здесь документы:

Для nginx создайте виртуальный хост для myprivate.com и передайте его apache, настроенному для прослушивания myprivate.com на порту 8080.

сервер {слушать 80; имя_сервера myprivate.com;

# proxy it to Apache listening on 127.0.0.1:8080

location / {
    proxy_pass   http://127.0.0.1:8080;
}

}

Это должно сработать.

Затем на apache создайте виртуальный хост для прослушивания myprivate.com.

Вы можете использовать apache2 mod_rewrite. Вы можете определить соответствующие условия и правила для перезаписи запрошенного URL.