Здравствуйте!
Сталкиваюсь с подобным впервые, прошу вашей помощи.
Есть задача проксирования web-странички (пром. оборудование) при помощи nginx (но не принципиально), загуглил, сделал так:
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://192.168.1.101/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
работает, но далее web-app инициирует подключение к localhost:81, нашел в app.js описание api с намертво прибитыми портами:
...
"/api/", ":1337/api/", ":81/api/"
...
увидел попытку подключения на 81 порт, добавил для теста такое:
server {
listen 81;
server_name localhost;
location / {
proxy_pass http://192.168.1.101:81/;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
в таком виде заработало.
Теперь основной вопрос: Как проксировать эту страничку вместе с её апи на одном порту nginx, причем по location /equipment/ ?
Мне в голову пришла идея попытаться подменить app.js на нужный с исправленным содержимым на:
...
"/api/", "/api_1337/", "/api_81/"
...
а в nginx сделать как-то так:
server {
listen 80;
server_name localhost;
location /equipment/ {
proxy_pass http://192.168.1.101:80/;
}
location /equipment/api_81/ {
proxy_pass http://192.168.1.101:81/;
}
location /equipment/api_1337/ {
proxy_pass http://192.168.1.101:1337/;
}
}
Каким образом отдать нужный app.js? Посоветуйте, пожалуйста, решение.