【问题标题】:Two Nginx server block only one works with React app两个 Nginx 服务器块只有一个与 React 应用程序一起使用
【发布时间】:2022-01-25 15:04:55
【问题描述】:

我想用 nginx 在我的 linux(CentOS) 服务器上托管几个 react 应用程序。

目前我在 nginx.conf 中有两个服务器块。

第一台服务器是我将不同请求代理到不同服务器的地方。 第二个服务器是我的反应应用程序。

我无法通过 nginx 获取我的 react 应用程序主机。

第 1 块

server {
    listen 80
    server_name localhost
    root /usr/share/nginx/html

    ...
    location /app1/ {
        proxy_pass http://localhost:3010
    }
    ...
}

第 2 块

server {
        listen          3010;
        listen          [::]:3010;
        server_name     localhost;
        root            /home/administrator/Projects/app1/build;
        index           index.html index.htm;

        location / {
                try_files $uri $uri/ =404;
        }
    }

当我使用 telnet 检查服务器是否托管时。只有 80 端口在监听。 没有服务器在监听 3010 端口。

我应该如何更改我的 Nginx 配置以使其正常工作?

更新

我检查了 nginx 错误日志,我得到了

1862#0:bind() 到 0.0.0.0:3010 失败(13:权限被拒绝)

我已经搜索过了,有很多关于非root用户无法监听1024以下端口的答案

但是服务器正在尝试在 3010 上绑定

我还需要添加 root 运行的 nginx 吗?

【问题讨论】:

    标签: linux nginx


    【解决方案1】:

    这可能与 SELinux 安全策略有关。如果您检查以下命令并看到 http 只允许绑定在端口列表上。

    [root@localhost]# semanage port -l | grep http_port_t
    http_port_t                    tcp      80, 81, 443, 488, 8008, 8009, 8443, 9000
    

    也许您可以使用任何列出的端口或使用以下命令添加您的自定义端口

    $ semanage port -a -t http_port_t  -p tcp 3010
    

    如果semanage命令未安装,您可以使用yum provides semanage命令检查以确定要安装哪个包。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-16
      • 2019-10-29
      • 2019-01-13
      • 2023-03-10
      • 1970-01-01
      • 1970-01-01
      • 2020-07-07
      • 1970-01-01
      相关资源
      最近更新 更多