Skip to content

Instantly share code, notes, and snippets.

@jyotendra
Created March 24, 2018 14:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save jyotendra/01af693858b3cd884a6da395d04823c7 to your computer and use it in GitHub Desktop.
Save jyotendra/01af693858b3cd884a6da395d04823c7 to your computer and use it in GitHub Desktop.
sample configuration files for nginx setup
server {
listen 80;
server_name www.js-server.com js-server.com;
root /home/jyotendra/files/projects/express-sequelize/;
location ~
^/(assets/|public/|images/|img/|javascript/|js/|css/|stylesheets/|media/|static){
root /home/jyotendra/files/projects/express-sequelize/public;
access_log off;
expires 24h;
}
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $http_host;
proxy_set_header X-Nginx-Proxy true;
proxy_pass http://127.0.0.1:3000/;
proxy_redirect off;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_redirect off;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
include /etc/nginx/sites-enabled/*;
default_type application/octet-stream;
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
#tcp_nopush on;
keepalive_timeout 65;
#gzip on;
include /etc/nginx/conf.d/*.conf;
}
@jyotendra
Copy link
Author

jyotendra commented Mar 24, 2018

  • Follow nginx install process as mentioned here: https://www.nginx.com/resources/wiki/start/topics/tutorials/install/
  • on successful installation navigate to /etc/nginx
  • new installations don't come with "site-available" and "site-enabled" folder, so create them
  • /etc/nginx/nginx.conf is the entry point for the server. Include enabled sites configurations with "include /etc/nginx/sites-enabled/*;" in "http" section.
  • navigate to "sites-available" folder and add "express.conf" there. It still won't be recognized by server as it's not in "sites-enabled" folder.
  • create symbolic link to "sites-enabled" with " sudo ln -s /etc/nginx/sites-available/express.conf /etc/nginx/sites-enabled " - its important to create symbolic link from root ("/") or else empty file gets created.
  • check "nginx.conf" with "sudo nginx -t" command.
  • If everything is right, restart nginx using: "sudo systemctl restart nginx".
  • Check nginx's status using "sudo systemctl status nginx".

Following links are helpful for configuring nginx with pm2, express:

@jyotendra
Copy link
Author

The following code in express.conf:

        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header Host $http_host;
        proxy_set_header X-Nginx-Proxy true;
        proxy_pass http://127.0.0.1:3000/;
        proxy_redirect off;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_redirect off;
        proxy_set_header X-Forwarded-Proto $scheme;

does the task of forwarding traffic coming for "www.js-server.com" to "localhost:3000". Plus, it sets the proxy headers.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment