Застрял в реализации «быстрой и грязной» функциональности совместного использования ссылок на веб-ресурсы, которая должна работать в соответствии со следующим сценарием:
- пользователь перечисляет элементы из базы данных, нажимает на правку
- система открывает диалоговое окно редактирования с выбранным приложением
- система представляет ссылку на этот элемент в этом экземпляре приложения, так что с помощью нескольких вкладок пользователь может Ctrl + C или Cmd + C it ...
Итак, у меня есть следующий код в шаблоне mojolicious, который Mojolicious отлично переводит в правильный абсолютный URL-адрес при запуске без nginx обратный прокси:
<input id="modal-dia-share-lnk" @focus="this.document.execCommand('selectAll',false,null)"
:value="'<%= $self->req->url->to_abs =%>?&'+'with=id-eq-'+this.$attrs.id.replace('dia-','')" readonly>
, что означает что-то вроде:
http://host-name:8082/qto/list/monthly_issues_202004?&with=id-eq-200327122837
, который имеет порт
, но во время работы за обратным прокси-сервером он пропускает порт, поэтому, даже если я работаю на порту 441, сгенерированный URL имеет НЕ порт http://qto.fi/qto/list/monthly_issues_202004?&with=id-eq-200325163720
Что является неприемлемым в этом установка , потому что уровень приложения Mojo для dev должен прослушивать порт 441 , а уровень приложения Mojo для prd должен прослушивать порт 443
На самом деле вы можете получить сценарий как в:
- экземпляре слоя приложения qto в dev
- экземпляре слоя приложения qto в prd
, просто нажав кнопку ОК, чтобы войти в систему с анонимным пользователем по умолчанию ...
Я мог бы создать URL-адрес на основе существующей конфигурации приложение, но я предполагаю, что должен быть быстрый nginx взлом, чтобы фактически включить порт с помощью некоторого регулярного выражения в директиве location или что-то в этом роде ...
Это обратный прокси conf :
server {
listen 443 ssl;
server_name qto.fi;
server_tokens off;
ssl_certificate /etc/letsencrypt/live/qto.fi/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/qto.fi/privkey.pem;
location / {
proxy_pass http://localhost:8080/;
proxy_http_version 1.1;
proxy_pass_header Authorization;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
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;
proxy_read_timeout 10s;
}
}
также существует следующий http conf для сайта разработчика:
server {
listen 78;
listen [::]:78;
server_name qto.fi;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
location / {
proxy_pass http://localhost:8078/;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For
$proxy_add_x_forwarded_for;
# ....
}
}