CentOS 中 NodeJS 应用程序的 Nginx 最安全配置

CentOS 中 NodeJS 应用程序的 Nginx 最安全配置

我有多个 NodeJS 应用程序在不同的端口上运行。

我需要他们每个人都使用 Nginx 通过子域工作,例如,而不是example.com:4001用户可以在app1.example.com

我发现了两种似乎合适的解决方案,但是第二种解决方案还不起作用,即使它起作用,我也不知道它是否比第一种解决方案更安全。

我应该坚持解决方案 1 还是更加努力地实施解决方案 2?

解决方案 1 (作品

server {
    listen 80;
    server_name app1.example.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:4001";
    }
}

解决方案 2 (尚未工作

404 Not Found nginx

server {
    listen 80;
    server_name app1.example.com;

    location = / {      
    proxy_pass http://127.0.0.1:4001;
    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;
    }
}

操作系统:CentOS 6.9(最终版本)

Nginx的:1.12.2

自定义配置文件:/etc/nginx/conf.d/nodeapps.conf

答案1

server {}正如文档中所述,每个子域需要一个块。http://nginx.org/en/docs/http/server_names.html

例如

server {
    listen 80;
    server_name app1.example.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:4001";
    }
}
server {
    listen 80;
    server_name app2.example.com;

    location / {
        proxy_set_header   X-Forwarded-For $remote_addr;
        proxy_set_header   Host $http_host;
        proxy_pass         "http://127.0.0.1:4002";
    }
}

我也强烈建议使用上游模块作为后端。http://nginx.org/en/docs/http/ngx_http_upstream_module.html

相关内容