how to setup a reverse proxy with NGINX

 


1- Frst thing to do is adding an A record with the value subdomain and the IP adresse of the server from your admin panel domain provider

2- Before adding the server for the subdomain.domain.com you must generate a ssl sertificate for this subdomain.domain using : 

certbot --nginx -d subdomain.domain.com

3- Edit the content of the file /etc/nginx/nginx.conf : 


user nginx;

worker_processes auto;

error_log /var/log/nginx/error.log;

pid /run/nginx.pid;


# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.

include /usr/share/nginx/modules/*.conf;


events {

    worker_connections 1024;

}


http {

    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;

    tcp_nodelay         on;

    keepalive_timeout   65;

    types_hash_max_size 2048;


    include             /etc/nginx/mime.types;

    default_type        application/octet-stream;

    include /etc/nginx/conf.d/*.conf;


    server {

        listen       80 default_server;

        listen       [::]:80 default_server;

        server_name  _;

        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

        location / {

        }

        error_page 404 /404.html;

            location = /40x.html {

        }

        error_page 500 502 503 504 /50x.html;

            location = /50x.html {

        }

    }


    server {

        server_name domain.com; # managed by Certbot

        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

        location / {

        }

        error_page 404 /404.html;

            location = /40x.html {

        }


        error_page 500 502 503 504 /50x.html;

            location = /50x.html {

        }

        listen [::]:443 ssl ipv6only=on; # managed by Certbot

        listen 443 ssl; # managed by Certbot

        ssl_certificate /etc/letsencrypt/live/domain.com/fullchain.pem; # managed by Certbot

        ssl_certificate_key /etc/letsencrypt/live/domain.com/privkey.pem; # managed by Certbot

        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    }


    server {

        if ($host = domain.com) {

            return 301 https://$host$request_uri;

        } # managed by Certbot

        listen       80 ;

        listen       [::]:80 ;

        server_name domain.com;

        return 404; # managed by Certbot

    }


    server {

        server_name subdomain.domain.com; # managed by Certbot

        root         /usr/share/nginx/html;

        # Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;

        location / {

            proxy_set_header   X-Real-IP        $remote_addr;

            proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;

            proxy_set_header   Host             $host;


            proxy_pass http://127.0.0.1:8181/;

        }

        error_page 404 /404.html;

            location = /40x.html {

        }

        error_page 500 502 503 504 /50x.html;

            location = /50x.html {

        }

        listen [::]:443 ssl; # managed by Certbot

        listen 443 ssl; # managed by Certbot

        ssl_certificate /etc/letsencrypt/live/subdomain.domain.com/fullchain.pem; # managed by Certbot

        ssl_certificate_key /etc/letsencrypt/live/subdomain.domain.com/privkey.pem; # managed by Certbot

        include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

        ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    }


    server {

        if ($host = subdomain.domain.com) {

            return 301 https://$host$request_uri;

        } # managed by Certbot

        listen       80 ;

        listen       [::]:80 ;

        server_name subdomain.domain.com;

        return 404; # managed by Certbot

    }

}





4- Restart nginx service using :

service nginx restart


Enregistrer un commentaire

Plus récente Plus ancienne