Прокси URL-адреса Nginx на сервер

Я пытаюсь

  • перенаправить весь трафик с www.example.com и example .com на old-www.website.com

  • проксирует весь трафик с example.com/forum (и www) на сервер форума @ 192.168.100.100

Я пробовал следующую конфигурацию, но она продолжает возвращать меня на мой старый сайт Когда я удаляю местоположение / , форум не загружается, и я получаю 404 , поскольку сервер пытается загрузить файлы @ example.com/ вместо example.com/forum

server {
    listen 80;
    server_name www.example.com example.com;

    location /forum/ {
        proxy_pass         http://192.168.100.100/;
        proxy_redirect     off;
        proxy_set_header   Host $host;
    }

    location / {
        return 302 $scheme://www.old-site.com;
    }
}

Как я могу это исправить?

1
задан 11 November 2016 в 14:15
2 ответа

Проблема заключается в дополнительном / в вашем операторе proxy_pass . Это заставляет nginx всегда использовать / в качестве URI вашего форума.

Попробуйте следующее:

location ~ /forum(/.+)? {
     proxy_pass http://192.168.100.100$1;
     proxy_redirect off;
     proxy_set_header Host $host;
}

Здесь я предполагаю, что вам нужен URL http://www.example.com/ forum / something проксируются на http://192.168.100.100/something . Без совпадения регулярного выражения и $ 1 в proxy_pass он будет прокси-сервером на http://192.168.100.100/forum/something .

1
ответ дан 4 December 2019 в 05:39

Попробуйте это. Вот очень простой пример, который перенаправляет клиентов на новое доменное имя:

server {
    listen 80;
    listen 443 ssl;
    server_name www.old-name.com;
    return 301 $scheme://www.new-name.com$request_uri;
}
-1
ответ дан 4 December 2019 в 05:39

Теги

Похожие вопросы