关于在端口3000上运行的Express应用程序的node.js:nginx配置

 2021-04-27 

nginx config for express app running on port 3000

我正在尝试设置nginx,以使其拉动在端口3000上运行的应用程序。

当我访问mydomain.com:3000时,该应用程序开始运行。我希望它在没有端口的情况下运行。

我有nginx设置,并且可以正常工作。
我有一个SSL证书设置,并且运行正常(我能够看到带有SSL的Nginx起始页)
我的www重定向正常工作。

我现在要做的部分是获取在端口3000上运行的内容,并使其在端口80上运行。

这是我的配置文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
upstream myapp {
  server 127.0.0.1:3000;
}

server {
    #listen 80 is default
    server_name www.mydomain.com;
    return 301 $scheme://mydomain.com$request_uri;
}

server {
    listen 80;
    listen   [::]:80;
    listen   443 default ssl;
    ssl on;
    ssl_certificate    /root/certs/bundle.crt;
    ssl_certificate_key    /root/certs/mydomain.key;  

    server_name mydomain.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_redirect  off;
      try_files @node $uri.html;
    }

    location @node {
      proxy_pass https://myapp;
    }

}

当我使用此设置访问页面时,出现500个内部服务器错误。我在做什么错?


1
2
3
4
5
6
7
8
server {
    listen   80;
    server_name  p3000;
    location / {
        proxy_pass http://0.0.0.0:3000;
        include /etc/nginx/proxy_params;
    }
}

我知道了,因为我使用的是SSL,所以我需要确保它是https。这是我的最终配置:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
upstream app_nodejs {
  server 127.0.0.1:3000;
}

server {
    #listen 80 is default
    server_name www.mydomain.com;
    return 301 $scheme://mydomain.com$request_uri;
}

server {
    listen 80;
    listen   [::]:80;
    listen   443 default ssl;
    ssl on;
    ssl_certificate    /root/certs/bundle.crt;
    ssl_certificate_key    /root/certs/mydomain.key;  

    server_name mydomain.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;
    }

}