坚持实施“快速而肮脏的” Web资源链接共享功能,该功能应根据以下情况工作:
所以我在mojolicious模板中有以下代码,在没有nginx反向代理的情况下,Mojolicious可以完美地将其转换为正确的绝对URL:
<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
哪个HAS端口
但是,在反向代理后面运行时,它会忽略端口,因此即使我在端口441上运行生成的URL是NOT是否具有端口http://qto.fi/qto/list/monthly_issues_202004?&with=id-eq-200325163720
在此setup中这是不可接受的,因为dev的Mojo应用程序层必须正在监听端口441,而prd的Mojo应用程序层必须正在监听端口443
您实际上可以在两种情况下都获得该场景:
我可以根据应用程序的现有配置来构建url,但是我想应该有快速的nginx hack可以通过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;
# ....
}
}
坚持执行“快速而又肮脏的” Web资源链接共享功能,该功能应根据以下情况工作:用户列出数据库中的项目,单击编辑系统上的按钮...
将端口添加到nginx反向代理conf中的Host标头:
一种解决方法,但可能不是真正的解决方案,]
通过proxy_set_header Host $host:78;
建立网址