Search code examples
create-react-appnginx-config

React-App not showing only on port 80 on Server 2012 R2?


I have a full stack site designed to run on port 80 with the Node backend using port 5000. This site runs without fail on a Windows 10 machine.

When I copy it to a domain server running on 2012 R2 I cannot get it to function on port 80, although port 90 shows with no problems.

IIS is turned off and netstat -aon shows that Node is the PID using port 80. I then tried building the page and serving it with NGINX and am getting the same results, except that NGINX is now the process using port 80.

Here is the code I believe to be relevant but am uncertain of what to do with it.

My .env file for react-app is simple:

PORT=80

When switching to port 90 it functions successfully.

If I attempt to run through NGINX (with which I am unfamiliar) using the following configuration:

worker_processes 1;

events {
        worker_connections 1024;
}

http {
    # include mime.types;
    # default_type application/octet-stream;
    # sendfile on;
    # keepalive_timeout 65;
    # gzip on;
    server {
        listen 80;
        server_name localhost;

        location / {
            proxy_pass http://localhost:90;
            root C:\intranet\New_Test\frontend\build;
            index $uri $uri/ /index.html;
        }

        location /api {
            proxy_pass http://localhost:5000;
        }
    }
}

I still get nothing.

I have also tried it without forwarding port 80 to port 90 with the same results.

Do I have an incorrect configuration somewhere? The netstat also says that SYSTEM is using port 80 for some reason but it is also using a number of other HTTP ports.

** Edit ** I have since updated my nginx.conf file to this:

worker_processes 1;

events {
        worker_connections 1024;
}

http {
    # include mime.types;
    # default_type application/octet-stream;
    # sendfile on;
    # keepalive_timeout 65;
    # gzip on;
    include mime.types;
    server {
        listen 90;
        server_name localhost;
        root html;
        index  /index.html;

        location / {
            try_files $uri $uri/ /index.html;
        }

        location /api {
            proxy_pass http://localhost:5000;
        }
    }
}

This is working fine to display the site in port 90 but for whatever reason port 80 in inaccessible to me on this machine.


Solution

  • Switched to a different model. Putting this answer to close the question. Went with nssm (https://alex.domenici.net/archive/deploying-a-node-js-application-on-windows-iis-using-a-reverse-proxy - step 5) and hosted the built React portion through IIS and using NSSM to run node as a service. Works well on local machine if I set my REACT_APP_HOST to localhost. Now experimenting with pathing so that the server can be reached from any client, not just a page on the localhost server.