Одно и то же имя_сервера с разными приложениями, подключенными как отдельные блоки местоположения в nginx.
Можно ли «подключить» разные веб-сервисы (доступные из разных контейнеров докеров) на один и тот же сервер nginx?
Вот простой пример, чтобы получить общее представление:
server {
listen 80;
listen [::]:80;
client_max_body_size 10M;
charset utf-8;
server_name my.server.org;
access_log /var/log/nginx/reverse-access.log;
error_log /var/log/nginx/reverse-error.log;
location / {
include proxy_params;
proxy_pass http://127.0.0.1:8081/;
}
location /static/ {
include proxy_params;
include /etc/nginx/mime.types;
alias /var/www/app/static/;
}
location ^~ /app2/ {
include proxy_params;
proxy_pass http://127.0.0.1:8082;
}
location ^~ /app3/ {
include proxy_params;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8083;
}
}
где
Это первое приложение работает по адресу http://my.server.org/ .http://my.server.org:8081/.. . -&gt; <ahref="http: .."="" my.server.org="" rel="nofollow noopener noreferrer">http://my.server.org/.. . <br/> <ahref="http: .."="" my.server.org:8082="" rel="nofollow noopener noreferrer">http://my.server.org:8082/.. . -&gt; <ahref="http: .."="" app2="" my.server.org="" rel="nofollow noopener noreferrer">http://my.server.org/app2/.. . <br/> <ahref="http: .."="" my.server.org:8083="" rel="nofollow noopener noreferrer">http://my.server.org:8083/.. . -&gt; <ahref="http: .."="" app3="" my.server.org="" rel="nofollow noopener noreferrer">http://my.server.org/app3/.. .</ahref="http:></ahref="http:></ahref="http:></ahref="http:></ahref="http:>http://my.server.org/app2/ и <ahref="http: "="" app3="" my.server.org="" rel="nofollow noopener noreferrer">http://my.server.org/app3/ , сохраняя при этом то же имя сервера.<tcodeid="6425">. <br/>Эти приложения связаны с основным, но они полностью независимы, т.е. обслуживаются из других композиций докеров, причем их порты открыты соответственно по адресам 8082 и 8083.</tcodeid="6425"></ahref="http:>
Я хотел бы получить доступ к двум другим приложениям по адресу
Возможно ли достичь такой простой задачи в рамках уникального
На данный момент я получил 404 при обращении к этим двум другим URL-адресам.
По сути, я хочу сопоставить эти рабочие URL-адреса+порты и все их дочерние элементы с именованными местоположениями:
РЕДАКТИРОВАТЬ:
либо это:
location /app3/ {
if ($http_referer ~ "^$scheme://$http_host/app3/") {
rewrite ^/app3/(.*) $scheme://$http_host/app3/$1 redirect;
}
include proxy_params;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8083;
}
или это:
location ~*/app3/(.*)$ {
include proxy_params;
proxy_redirect off;
proxy_set_header Host $http_host;
proxy_pass http://127.0.0.1:8083/$1;
}
«работают» одинаково, но не идеально, потому что осталось две проблемы:
- обслуживается только необработанный HTML (например, без стилей: например, «502 плохой шлюз» в файлах CSS)
- ссылки внутри страниц указывают, например,
вместо . Следовательно, им «не хватает» префикс, и я не знаю, как его добавить, если его нет там, где он должен быть на самом деле.
1 ответ
Это типичная задача, но вы забыли две вещи:
- погуглите свой вопрос.
- добавление
пункты в каждом из блоки.