nginx - 如何使用 NGINX 反向代理,并将端口和路径代理到上游 url?
问题描述
我已经按照此处的说明设置了 nginx 反向代理:https ://medium.com/@mightywomble/how-to-set-up-nginx-reverse-proxy-with-lets-encrypt-8ef3fd6b79e5
我的 sites-enabled/mysite.conf 看起来像
server {
server_name mynginxreverseproxy.com;
set $upstream serverip:$server_port/;
location / {
proxy_pass_header Authorization;
proxy_pass http://$upstream;
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_http_version 1.1;
proxy_set_header Connection “”;
proxy_buffering off;
client_max_body_size 0;
proxy_read_timeout 36000s;
proxy_redirect off; }
listen 443 ssl; # paths to ssl cert files
} server {
if ($host = mynginxreverseproxy.com) {
return 301 https://$host$request_uri;
} # managed by Certbot
server_name mynginxreverseproxy.com; listen 80;
return 404;
}
我想将端口和路径转发到我的服务器,例如 https://mynginxreverseproxy.com:portnumber/myurl -> 到 serverip:com:portnumber/myurl。我已经能够为单个端口工作,该端口可以将端口 80 转发到我想要的端口,但是如何扩展它以适用于许多端口?
我有许多要设置的端口映射,因此最好使用变量来执行此操作,而不是对每个端口映射进行硬编码。
如何通过使用 conf 文件中的变量来传递端口和路径?
解决方案
经过大量调试和配置后,我最终得到了这个工作。
这
set $upstream serverip:$server_port
是正确的,但我错过了
listen
允许 NGINX 服务器监听特定端口的指令,它默认监听端口 80。但是,端口 80 并不是我想要传递到上游服务器的端口。
推荐阅读
- mysql - MySQL聚合列作为一组不同的值
- c# - API 向移动设备提供图像
- javascript - 无法使用批处理将数据写入 leveldb 文件
- python - How to assure that the covariance matrices are all positive definite in Pomigranate MultivariateGaussianDistribution
- parsing - 如何消除运算符优先级语法中的冲突?
- javascript - 更新vue中的嵌套数据
- c# - Xamarin.Forms 在 XAML 中使用局部变量
- python - while 循环在电子邮件密码检查器(python)中不起作用
- django - 如何将数组传递给 Django 表单
- laravel - 为什么我的某些数据不会出现在我的表格中?