Вот моя проблема: я пытаюсь сделать proxy_pass в «/» (расположенном на test.co) в отдельный домен - webflow.test.co - в то время как все остальные запросы «/(.+)» идут на мой сервер nodejs . К сожалению, при моих текущих настройках я получаю сообщение об ошибке «Не удается получить /index.html». Для меня это странно, особенно потому, что переход на webflow.test.co напрямую работает нормально.
Вот мой код - я очень благодарен за любую помощь. Я застрял на этом некоторое время, и я новичок в nginx:
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
# Redirect all non-HTTPS to non-WWW HTTPS
server {
listen 8080;
server_name "~^(?:www\.)?(.*)$";
return 301 https://$host$request_uri;
}
# Redirect WWW HTTP to non-WWW HTTP
server {
listen 4430;
server_name "~^www\.(.*)$";
return 301 https://$1$request_uri;
}
server {
listen 443 ssl;
server_name webflow.test.co;
location / {
proxy_pass http://webflow.test.co;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
# Reverse-proxy to http://nodejs
server {
listen 4430;
server_name "~^(?!www\.).*$";
client_max_body_size 50M;
location ~ /(.+) {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
РЕДАКТИРОВАТЬ, запрошенный @Tero ilkanen: два блока перенаправления вверху (не HTTPS и не WWW) являются устаревшими, но я предполагаю, что хочу, чтобы они остались. Я добавляю следующие функции: мне нужно иметь возможность перейти на домашнюю страницу (в данном случае test.co) и использовать прокси-сервер для webflow.test.co, не затрагивая хост. Все остальные запросы необходимо отправлять на сервер Nodejs, а именно test.co/api, test.co/media, test.co/login и некоторые другие. Это всего лишь пробный запуск - как только я устраню эту проблему, я добавлю поддержку определенных URL-адресов. Но пока домашняя страница> webflow.test.co, все остальное на сервере nodejs. С тех пор я добавил два блока местоположения обратно в один серверный блок Nodejs, но теперь я получаю бесконечный цикл перенаправления. Отредактирую и выложу обновленный код ниже.
upstream nodejs {
server 127.0.0.1:8081;
keepalive 256;
}
# Redirect all non-HTTPS to non-WWW HTTPS
server {
listen 8080;
server_name "~^(?:www\.)?(.*)$";
return 301 https://$host$request_uri;
}
# Redirect WWW HTTP to non-WWW HTTP
server {
listen 4430;
server_name "~^www\.(.*)$";
return 301 https://$1$request_uri;
}
# Reverse-proxy to http://nodejs
server {
listen 4430;
server_name "~^(?!www\.).*$";
client_max_body_size 50M;
location / {
proxy_pass http://webflow.test.co;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
location ~ /(.+) {
proxy_pass http://nodejs;
proxy_set_header Connection "";
proxy_http_version 1.1;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}