首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Nginx监听所有端口并将其转发到本地主机。

Nginx监听所有端口并将其转发到本地主机。
EN

Server Fault用户
提问于 2018-10-30 09:40:16
回答 1查看 7.8K关注 0票数 2
代码语言:javascript
运行
复制
server {
        listen 80;
        listen [::]:80;
        root /var/www/example.com/html;
        index index.html index.htm index.nginx-debian.html;
        server_name example.com;
        location / {
                try_files $uri $uri/ =404;
        }
    listen [::]:443 ssl ipv6only=on; # managed by Certbot
    listen 443 ssl; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
}

我已经为SSL证书设置了Nginx。现在我需要做什么才能将所有外部请求从https://example.com:转发到localhost:

例如:对https://example.com:3000的HTTP查询应该转发到侦听localhost:3000的本地NodeJS服务器,https://example.com:3001应该转发到localhost:3001,依此类推。

EN

回答 1

Server Fault用户

发布于 2018-10-30 14:53:28

Nginx反向代理可以帮助您重定向URLS和端口。

例如:下面的配置块将请求从http://example.com:3000重定向到127.0.0.1:3000

代码语言:javascript
运行
复制
upstream app_nodejs {
    server 127.0.0.1:3000;
  }

upstream web_nodejs {
    server 127.0.0.1:3001;
  }
server {
   listen 3000 default ssl;
   listen   [::]:3000;
   ssl on;
   ssl_certificate    /root/certs/app.crt;
   ssl_certificate_key    /root/certs/app.key;   

  server_name example.com;

  if ($ssl_protocol = "") {
    rewrite ^   https://$server_name$request_uri? permanent;
}

location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_set_header X-NginX-Proxy true;

  proxy_pass https://app_nodejs;
  proxy_redirect off;
}

}
server {
  listen 3001 default ssl;
  listen   [::]:3001;
  ssl on;
  ssl_certificate    /root/certs/web.crt;
  ssl_certificate_key    /root/certs/web.key;       

  server_name example.com;

 if ($ssl_protocol = "") {
   rewrite ^   https://$server_name$request_uri? permanent;
}

location / {
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header Host $http_host;
  proxy_set_header X-NginX-Proxy true;
  proxy_pass https://web_nodejs;
  proxy_redirect off;
 }

 }
票数 1
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/937824

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档