Configuring Virtual Hosts on Nginx Web Server

To host multiple domain in your Nginx Web Server you need to configure your Nginx web server. To do that you need to configure file /etc/nginx/nginx.conf. and create config file in /etc/nginx/sites-available/your_config.conf  and make symbolic link in /ect/nginx/sites-enabled/your_config.conf. Below is nginx.conf and config file for domain.

  1. Configuring nginx.conf

    user www-data;
    worker_processes auto;
    pid /run/nginx.pid;
    include /etc/nginx/modules-enabled/*.conf;
    
    events {
            worker_connections 768;
            # multi_accept on;
    }
    
    http {
    
            ##
            # Basic Settings
            ##
    
            sendfile on;
            tcp_nopush on;
            tcp_nodelay on;
            keepalive_timeout 65;
            types_hash_max_size 2048;
            # server_tokens off;
    
            # server_names_hash_bucket_size 64;
            # server_name_in_redirect off;
    
            include /etc/nginx/mime.types;
            default_type application/octet-stream;
    
            ##
            # SSL Settings
            ##​
    
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; # Dropping SSLv3, ref: POODLE
            ssl_prefer_server_ciphers on;
    
            ##
            # Logging Settings
            ##
    
            access_log /var/log/nginx/access.log;
            error_log /var/log/nginx/error.log;
    
            ##
            # Gzip Settings
            ##
    
            gzip on;
    
    # gzip_vary on;
            # gzip_proxied any;
            # gzip_comp_level 6;
            # gzip_buffers 16 8k;
            # gzip_http_version 1.1;
            # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
    
            ##
            # Virtual Host Configs
            ##
    
            include /etc/nginx/conf.d/*.conf;
            include /etc/nginx/sites-enabled/*;
    }
    
  2. Config Example for Domain
    server {
            root /var/www/yourdomain.com/public/;
            index index.html index.htm index.php index.nginx-debian.html;
            server_name yourdomain.com www.yourdomain.com;
            client_max_body_size 128M;
            client_body_timeout 320s;
    
            error_log /var/log/nginx/yourdomain.com.error;
            access_log /var/log/nginx/yourdomain.com.access;
    
            location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ {
                    expires max;
                    log_not_found off;
            }
    
            location / {
                    try_files $uri $uri/ /index.php?$args;
                    #try_files $uri/ $uri.html $uri.php$is_args$query_string;
            }
    
            location /web {
                    try_files $uri $uri.html $uri/ @extensionless-php;
                    index  index.html index.htm index.php;
            }
            location @extensionless-php {
                    rewrite ^(.*)$ $1.php last;
            }
    
            location ~ /\.(?!well-known).* {
            deny all;
            }
    
    location ~ \.php$ {
            include snippets/fastcgi-php.conf;
            fastcgi_pass unix:/run/php/php7.4-fpm.sock;
            fastcgi_read_timeout 300;
        }
    
        listen [::]:443 ssl; # managed by Certbot
        listen 443 ssl; # managed by Certbot
        ssl_certificate /etc/letsencrypt/live/dnymobile.com/fullchain.pem; # managed by Certbot
        ssl_certificate_key /etc/letsencrypt/live/dnymobile.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 = dnymobile.com) {
            return 301 https://$host$request_uri;
        } # managed by Certbot
    
    
            listen 80;
            listen [::]:80;
    
            server_name dnymobile.com www.dnymobile.com;
        return 404; # managed by Certbot
    
    
    }
    ​

Related Articles