How to configure multiple Nginx on a server?

Asked

Viewed 1,820 times

0

I need to configure two Nginx servers on a windows server.

One of them is responsible for processing the site, and already operating using the default settings of Nginx, what I need, is another Nginx, responsible for streaming media/videos, as I could configure them to work on the same machine, as would the configuration?

Do I need two Nginx servers for this or just one? Could I do this with two?... Separating operations in case the media server needed to be shut down, and Webserver did not for example?

What is the advantage of having Webserver and the media server in a single Nginx?

Webserver Nginx configuration with apache and php, nginx.conf:

#user  nobody;
worker_processes  2;

error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

pid        logs/nginx.pid;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    include       proxy.conf;
    index  index.html index.htm index.php;
    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  logs/access.log  main;

    # Hide nginx version information.
    server_tokens off;

    # Update charset_types due to updated mime.types
    charset_types text/xml text/plain text/vnd.wap.wml application/x-javascript application/rss+xml text/css application/javascript application/json;

    root   C:/xampp/htdocs;

    sendfile        on;

    # Tell Nginx not to send out partial frames; this increases throughput
    # since TCP frames are filled up before being sent out. (adds TCP_CORK)
    tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    # Compression
    # Enable Gzip compressed.
    gzip  on;
    gzip_comp_level   5;
#    gzip_http_version 1.0;
    gzip_min_length   256;
    gzip_proxied      any;
    gzip_vary         on;
    # Compress all output labeled with one of the following MIME-types.
    gzip_types
        application/atom+xml
        application/javascript
        application/json
        application/ld+json
        application/manifest+json
        application/rdf+xml
        application/rss+xml
        application/schema+json
        application/vnd.geo+json
        application/vnd.ms-fontobject
        application/x-font-ttf
        application/x-javascript
        application/x-web-app-manifest+json
        application/xhtml+xml
        application/xml
        font/eot
        font/opentype
        image/bmp
        image/svg+xml
        image/vnd.microsoft.icon
        image/x-icon
        text/cache-manifest
        text/css
        text/javascript
        text/plain
        text/vcard
        text/vnd.rim.location.xloc
        text/vtt
        text/x-component
        text/x-cross-domain-policy
        text/xml;

    server {
        listen       *:80;
        #listen       [::]:80  default ipv6only=on;
        #server_name  localhost;
        #server_name  app.meusite.com;


        charset utf-8;

        #https://github.com/h5bp/server-configs-nginx
        include h5bp/basic.conf;

        location / {
            root   C:/xampp/htdocs;
        }

        location ~ .php$ {
            # essentially the same as passing php requests back to apache

            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8185;
        }

        location ~ .custom$ {
            # essentially the same as passing php requests back to apache

            proxy_set_header X-Real-IP  $remote_addr;
            proxy_set_header X-Forwarded-For $remote_addr;
            proxy_set_header Host $host;
            proxy_pass http://127.0.0.1:8185;
        }

        #Adding location for phpmyadmin
        location /phpmyadmin {
            proxy_pass         http://127.0.0.1:8185/phpmyadmin;
#            allow 127.0.0.1;
#            deny all;
        }

        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

What I could do to get the Nginx stream server to work on the same machine with this Webserver?

  • Do you want to use two DNS, type http://site.com and http://media.site.com or all in the same domain, type http://site.com and http://site.com/media/videos ?

  • site.com and media.site.com @rodorgas

2 answers

3


Just add two directives server. Nginx will be able to differentiate by domain who should process the request. An example configuration would be:

server {
    listen       80;
    server_name  example.org  www.example.org;
    ...
}

server {
    listen       80;
    server_name  media.example.org;
    ...
}

You can test on your computer without using a public DNS by editing the hosts file (Windows: C:\Windows\drivers\etc\hosts, Linux: /etc/hosts) to redirect the website.com and media.site.com domains to the loopback address 127.0.0.1.

There is no advantage to having two independent Nginx instances on the same server, since serving multiple domains is very conventional and therefore a basic feature of HTTP servers.

It is very common to manage this situation using two folders, sites-available and another sites-enabled (this is the default setting in many linux distros). In Nginx.conf, we do not define the directive server not once, and instead:

[...]
http {
    [...]
    include /etc/nginx/sites-enabled/*.conf;
}

For each site you need to serve, you create a configuration file on sites-available, yes with the server directives. To put it on the air, just create a shortcut in sites-enabled and give Reload in Nginx. Similarly, when you want to take off the air just delete the link in sites-enabled and re-load again.

-2

Before Starting, make sure LEMP stack is installed on your VPS. You can check the Nginx server status with the following command:

systemctl status Nginx Best method to host Multiple websites is to create a Separate Document root directory and Configuration file for each website. So, you will need to create a directory Structure for Both websites Inside Nginx web root:

To do so, run the following command for each website:

mkdir /var/www/html/Web1.webdock.io mkdir /var/www/html/web2.webdock.io Next, you will need to create sample website content for each website:

First, create a index.html file for Web1.webdock.io website:

nano /var/www/html/Web1.webdock.io/index.html Add the following html Markup which will be served when you connect to the site:

Web1.webdock.io

Welcome to the Web1.webdock.io with Nginx webserver.

Save and close the file.

Next, create a index.html file for web2.webdock.io website:

nano /var/www/html/web2.webdock.io/index.html Add the following html Markup which will be served when you connect to the site:

web2.webdock.io

Welcome to the web2.webdock.io with Nginx webserver.

Save and close the file. Then, change the Ownership of Both website Directories to www-data:

chown -R www-data:www-data /var/www/html/Web1.webdock.io chown -R www-data:www-data /var/www/html/web2.webdock.io Create Virtual Configuration Next, you will need to create a virtual host Configuration file for each website that indicate how the Nginx web server will Respond to Various Domain requests.

First, create a virtual host Configuration file for the Web1.webdock.io website:

nano /etc/Nginx/sites-available/Web1.webdock.io.conf Add the following Lines:

server { Listen 80; Listen [:]:80; root /var/www/html/Web1.webdock.io; index index.html index.htm; server_name Web1.webdock.io;

Location / { try_files $Uri $Uri/ =404; }

}

Save and close the file. Then, create a virtual host Configuration file for the web2.webdock.io website:

nano /etc/Nginx/sites-available/web2.webdock.io.conf Add the following Lines:

server { Listen 80; Listen [:]:80; root /var/www/html/web2.webdock.io; index index.html index.htm; server_name web2.webdock.io;

Location / { try_files $Uri $Uri/ =404; }

} Save and close the file. Then, enable each virtual host with the following command:

ln -s /etc/Nginx/sites-available/Web1.webdock.io.conf /etc/Nginx/sites-enabled/ ln -s /etc/Nginx/sites-available/web2.webdock.io.conf /etc/Nginx/sites-enabled/ Next, check Nginx for any syntax error with the following command:

Nginx -t If Everything Goes fine, you should get the following output:

Nginx: the Configuration file /etc/Nginx/Nginx.conf syntax is ok Nginx: Configuration file /etc/Nginx/Nginx.conf test is Successful Finally, Restart the Nginx service to apply the Configuration changes:

systemctl Restart Nginx Test Your Websites Now, open your web browser and type the URL http://web1.webdock.io and http://web2.webdock.io. You should see Both websites with the content we have created earlier:

Web1.webdock.io

Source : https://webdock.io/en/docs/how-guides/shared-hosting-multiple-websites/how-configure-nginx-to-serve-multiple-websites-single-vps

Browser other questions tagged

You are not signed in. Login or sign up in order to post.