LINUX.ORG.RU
ФорумAdmin

прокси nginx + подмена файла?

 


0

1

Здравствуйте!

Сталкиваюсь с подобным впервые, прошу вашей помощи.

Есть задача проксирования 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? Посоветуйте, пожалуйста, решение.

Делаешь отдельный location

location = /app.js {
   alias /path/to/patched/app.js
}

Урл этого app.js и путь к подменённому файлу разумеется поставь какие надо.

firkax ★★★★★
()