【问题标题】:Using Nginx with Create-React-App dev server and npm start将 Nginx 与 Create-React-App 开发服务器和 npm start 一起使用
【发布时间】:2020-11-14 04:09:54
【问题描述】:

这里令人沮丧的问题。我在必须使用 Nginx 进行外部连接/HTML 服务器的服务器上使用 created-react-app 创建了一个反应项目。本质上我需要做的是使用 nginx 作为代理服务器,当在浏览器中输入 URL 时,请求被路由到 localhost:3000,react 应用程序生成结果,由 nginx 提供给客户端。

所以,到目前为止,这是 nginx 文件,但我无法让它工作。一些问题:

  1. 是否需要将root指定到react项目中的/public目录才能提取index.html?

  2. 假设你运行npm start,编译后在浏览器中输入FQDN,它会路由到localhost:3000

到目前为止我的 Nginx 配置

    server_name         server-name.com;   
    listen              443 ssl;
    ssl_certificate     /etc/letsencrypt/live/site-name/fullchain.pem;
    ssl_certificate_key /etc/letsencrypt/live/site-name/privkey.pem;
    ssl_protocols       TLSv1 TLSv1.1 TLSv1.2;
    ssl_ciphers         HIGH:!aNULL:!MD5;

    proxy_read_timeout 60s;
    client_max_body_size 64M;
    
    # should this be routed to /public in the react project to pick up index.html?
    # root /var/www/html;

    index index.html index.htm;

    location / {
        #try_files $uri $uri/ =404;
        
        # Make sure React Application return is index.html so client routing remains in sync/reachable        
        #try_files $uri /index.html;
   
        proxy_pass  http://localhost:3000;
        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;
    }    

    location /_api {
       rewrite ^/_api/(.+) /$1 break;
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3030;
    }
}

server {
    server_name         server-name.com   
    listen              80;

    allow 10.0.0.0/16;
    deny all;

    proxy_read_timeout 60s;
    client_max_body_size 64M;

    # Should this be routed to /public in the react project to pick up index.html?
    # root /var/www/html;

    index index.html index.htm;

    location / {
        #try_files $uri $uri/ =404;
        
        # Make sure React Application return is index.html so client routing remains in sync/reachable        
        try_files $uri /index.html;

    }    

    location /_api {
        include uwsgi_params;
        uwsgi_pass 127.0.0.1:3030;
   }
} 

【问题讨论】:

    标签: node.js reactjs nginx create-react-app nginx-config


    【解决方案1】:

    如果你不知道怎么做,请打开你的 nginx 文件 vi sites-enabled/default。

    然后从该文件中删除所有内容并简单地粘贴:

    server {
        listen 80;
        client_max_body_size 10M;
        server_name YourWebsiteNameWithDomain yourIPV4;
        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_cache_bypass $http_upgrade;
         }
    }
    

    别忘了重启你的 nginx

    【讨论】:

    • 嗨 Sumit 谢谢你的建议。我正在使用 Centos7 并且没有启用站点/默认文件。我只有 conf.d 目录和我的 nginx-site.conf 文件。这会进去吗?
    猜你喜欢
    • 2017-02-18
    • 1970-01-01
    • 2021-09-26
    • 1970-01-01
    • 1970-01-01
    • 2021-01-03
    • 2018-09-06
    • 2018-03-19
    • 1970-01-01
    相关资源
    最近更新 更多