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

прокси nginx: переадресация порта с 8080 на 80 работает, но сгенерированные ссылки в веб-приложении после этого не работают

Я пытаюсь настроить действительно простую вещь:

используйте Nginx для прослушивания порта 8080 и перенаправления всего на внутренний хост с портом 80. На данный момент это моя конфигурация:

server {
    listen 8080;
    server_name publichost;

    location / {
        proxy_set_header   Host $http_host;
        proxy_pass http://app1;
    }
}
server {
    listen 80;
    server_name publichost;

    location / {
        proxy_set_header   Host $http_host;
        proxy_pass http://app2;
    }
}

Все идет нормально. Теперь, когда я открываю http: // publichost: 8080 он работает, и браузер показывает сайт index.html.

Но теперь каждая ссылка на ресурс в этом index.html пытается загрузить файлы из app2

<link rel="stylesheet" type="text/css" href="http://publichost/static/styles.css">

в этом есть смысл, поскольку прокси-сервер пересылает все запросы с портом 8080 в мое приложение1 и использует внутренний порт 80, а каждый запрос с портом 80 направляется в приложение2.

У меня вопрос: как настроить прокси-сервер nginx, чтобы он работал? Я хочу иметь другое веб-приложение, доступное через порт 80 по умолчанию.

Уведомление Возможно, важно отметить, что это приложение magento2, которое хранит свой базовый URL в базе данных. Поэтому я должен один раз установить его соответствующим образом и не должен его менять. Затем Magento генерирует URL-адреса для таких ресурсов, как css, javascript и изображения с этим базовым URL-адресом.

Вероятно, это зависит от приложения.

Иногда приложение отвечает на заголовок (IE 'x-script-name' для таких фреймворков, как Django) или имеет собственный механизм для перезаписи URL-адресов (VirtualHostMonster IE Plone). Иногда у них просто есть настройка в приложении.