Использование 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.
Что я делаю неправильно?
Ответы
Ответ 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;
}
и тот же блок для второго