Подтвердить что ты не робот

Использование nginx в качестве обратного прокси-сервера для сервера IIS

У меня есть несколько приложений ASP.NET, работающих на одном сервере IIS с разными портами для каждого приложения.

Я установил nginx на том же сервере, чтобы мои клиенты могли обращаться ко всем моим приложениям только с помощью порта 80.

Nginx работает на порту 80. Мои отдельные приложения ASP.NET также работают и работают.

Я сделал эти изменения в файле nginx conf

    location /students/ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:84;
    }
    location /registration/ {
        proxy_set_header X-Real-IP  $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_set_header Host $host;
        proxy_pass http://127.0.0.1:82;
    }

Затем я перезапустил nginx и набрал url http://127.0.0.1/students/ в своем браузере. Nginx обслуживал 404 страницы.

Я не внес никаких изменений в файл conf.

Что я делаю неправильно?

4b9b3361

Ответ 1

Я считаю, что проблема, с которой вы сталкиваетесь, связана с началом пути URL. Возвращает ли URL http://120.0.0.1:84/students/ страницу или 404? Если вы ожидаете перейти на http://127.0.0.1:80/students/ и увидите страницу в http://127.0.0.1/, вы обнаружите, что nginx не преобразует путь для вас с этой конфигурацией. Скорее, он ищет точно такой же путь на прокси-сервере.

Вам нужно поместить / в конец URL-адреса в директиве proxy_pass:

location /students/ {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:84/;
}

Это тонкая, но важная информация в конфигурациях nginx! Если вы не включаете обратную косую черту, http://127.0.0.1:84 будет рассматриваться как местоположение сервера. Если у вас есть обратная косая черта, это будет рассматриваться как URL-адрес, и он заменит все в прокси-URL до части "location".

Ответ 2

Если вы хотите преобразовать IIS 127.0.0.1:84/students в nginx 127.0.0.1/students. попробуйте под кодом..

location /students {
   proxy_set_header X-Real-IP  $remote_addr;
   proxy_set_header X-Forwarded-For $remote_addr;
   proxy_set_header Host $host;
   proxy_pass http://127.0.0.1:84/students;
 }
location /registration {
    proxy_set_header X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:82/registration;
}

Ответ 3

Попробуйте использовать эту директиву

 upstream http://localhost {
     server 127.0.0.1:84;
 }

и тот же блок для второго