使用 Nginx 作为 Express Nodejs 的反向代理“无法访问此网站”

Sho*_*end 5 http nginx node.js express

我在外部访问我的节点服务器时遇到问题。在内部,我可以很好地访问它,但否则我无法这样做。

这是我的 nginx 配置。我只想仅使用我的外部 IP 访问我的网站(例如 133.21.29.21)

server {
        listen 80 default_server;
        listen [::]:80 default_server;
        listen 2500;

        location / {
          proxy_pass http://127.0.0.1:3005;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection 'upgrade';
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
}
Run Code Online (Sandbox Code Playgroud)

服务器代码

    app.server.listen(3003, "0.0.0.0", () => {
            console.log(app.server.address());
    });
Run Code Online (Sandbox Code Playgroud)

我现在正在端口 3003 上运行。我尝试过服务器 nginx 配置并更改我的服务器代码(更改端口,省略“0.0.0.0”,使用“127.0.0.1”),但我没有任何运气。

我一直在尝试通过 my-external-ip:2500 来访问我的服务器,但我也尝试过通过其他端口进行访问。

我已经禁用了 ufw 防火墙,但仍然没有任何运气。局部冰壶效果很好。

我做错了什么?

Abd*_*had 0

我认为您缺少代理重定向

看一下下面的 NGINX 配置文件示例,位置 / { } 指向端口 9080 上的节点服务器,它通过导航到 https:// ... .com 来工作

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name _;
    return 301 https://$host$request_uri;
}

map $http_upgrade $connection_upgrade {
    default upgrade;
    '' close;
}

server {
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    ssl on;
    ssl_certificate /etc/letsencrypt/live/thedomain.com/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/thedomain.com/privkey.pem;

    access_log /var/log/nginx/thedomain.access.log;
    error_log  /var/log/nginx/thedomain.error.log;

    server_name _;

    root            /var/www/html;

    index           index.html;

    gzip on;
    gzip_proxied any;
    gzip_types text/css text/javascript text/xml text/plain application/javascript application/x-javascript application/json;

    location /.well-known/ {
        try_files   $uri $uri/ =404;
    }

    location /jenkins {
        include /etc/nginx/proxy_params;
        proxy_pass          http://localhost:8080;
        proxy_read_timeout  90s;
        proxy_redirect      http://localhost:8080 https://www.thedomain.com/jenkins;
    }

    location /wss/pforex {
        include /etc/nginx/proxy_params;
        proxy_pass          http://localhost:9190;

        proxy_http_version  1.1;
        proxy_read_timeout  90s;
        proxy_set_header    Upgrade $http_upgrade;
        proxy_set_header    Connection $connection_upgrade;
        proxy_redirect      http://localhost:9190 https://www.thedomain.com/wss/pforex;
    }

    location / {
        include /etc/nginx/proxy_params;
        proxy_pass          http://localhost:9080;
        proxy_read_timeout  90s;
        proxy_redirect      http://localhost:9080 https://www.thedomain.com;
    }
}
Run Code Online (Sandbox Code Playgroud)