nginx反向代理nodejs子域

nginx reverse proxy nodejs subdomain

我有问题。

我在 Plesk 内部子域的 :3000 上有一个节点应用程序 运行。

我有子域 https://xxx.flamingocams.co.uk ; 当我导航到子域时,它显示默认的 plesk 页面,这就是问题所在;

我尝试将节点应用程序的端口更改为 80 和 443,但这与 plesk 冲突。 我在 https://xxx.flamingocams.co.uk:3000.

上访问节点应用程序时没有问题

现在我看到其他人尝试的唯一另一件事是反向代理;

我找到了这个 example;

server {
        listen 0.0.0.0:80;
        server_name xxx.flamingocams.co.uk;
        access_log "/var/log/nginx/xxxflam.log";
        location / {
            proxy_pass http://127.0.0.1:3000/;
            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-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_cache_bypass $http_upgrade;
        }
}

我是 运行 Plesk Obsidian v18.0.34_build1800210325.10 os_Ubuntu 16.04 所以我的问题是,我应该把这个配置放在哪里才能让子域只指向 nodejs 应用程序?

此配置是否适合我要实现的目标?

我对 nginx 配置知之甚少,抱歉

我已经查看了这个 post 并且答案说我需要添加一个配置 /etc/nginx/sites-available/yourdomain.com 但是我没有目录 sites-available

对评论的回复 // xxx.flamingocams.co.uk.conf

server {
        listen 0.0.0.0:80;
        server_name xxx.flamingocams.co.uk;
        access_log "/var/log/nginx/xxxflam.log";
        location / {
            proxy_pass http://127.0.0.1:3000/;
            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-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_cache_bypass $http_upgrade;
        }
}

server {
        listen 0.0.0.0:443;
        server_name xxx.flamingocams.co.uk;
        ssl_certificate             /opt/psa/var/certificates/scfZc0CwJ;
        ssl_certificate_key         /opt/psa/var/certificates/scfZc0CwJ;
        server_name xxx.flamingocams.co.uk;
        access_log "/var/log/nginx/xxxflam.log";
        location / {
            proxy_pass http://127.0.0.1:3000/;
            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-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-NginX-Proxy true;
            proxy_cache_bypass $http_upgrade;
        }
}

在您的配置中,服务器 运行 仅在端口 80

  listen 0.0.0.0:80;

使用此配置,页面:http://xxx.flamingocams.co.uk 将显示您的应用程序(请求到达 NginX 代理,然后转发到端口 3000 上的 NodeJS 应用程序)。因为在端口 443 上没有任何 server 块侦听,所以会显示默认的 Plesk 屏幕。

为了让你的应用运行在https上,你需要在NginX上监听443端口,你还需要配置SSL证书

配置为:

server {
        listen 0.0.0.0:443;
        server_name xxx.flamingocams.co.uk;
        ssl_certificate     path_to_your_ssl_certificate;
        ssl_certificate_key path_to_your_ssl_key;

        # The rest of your config is ok :)

}