Могу ли я использовать один поддомен для обслуживания нескольких веб-сайтов на разных портах с помощью nginx?

#nginx

#nginx

Вопрос:

Есть ли какой-либо способ, которым я могу использовать один поддомен / домен, т. mysub.domain.com е. domain.com для обслуживания нескольких веб-сайтов на разных портах?

Я использую nginx, и ниже приведена моя конфигурация для локальной разработки.

 server {

        listen      1900;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   D:testwebsite;
            index  index.html index.htm;
            expires -1;

            add_header Pragma "no-cache";

            add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";

            try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        
    }

    server {
        listen       80;
        server_name  localhost;

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {
            root   D:prodwebsite;
            index  index.html index.htm;
            expires -1;

            add_header Pragma "no-cache";

            add_header Cache-Control "no-store, no-cache, must-revalidate, post-check=0, pre-check=0";

            try_files $uri$args $uri$args/ $uri $uri/ /index.html =404;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ .php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ .php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache's document root
        # concurs with nginx's one
        #
        #location ~ /.ht {
        #    deny  all;
        #}
    }

 

Согласно конфигурации, в настоящее время я обслуживаю два разных веб-сайта: prod (порт 80) и test (порт 1900). Можно ли это сделать с помощью домена или поддомена?

Я никогда раньше не делал этого с поддоменом / доменом, поэтому я не совсем уверен, как это работает. Я проводил некоторые исследования, но просто не мог полностью понять это.

Комментарии:

1. Вы, конечно, можете — точно так же, как вы это уже делали. Просто добавьте больше server блоков, каждый на другом порту. У вас могут быть как разные порты в одном домене / поддомене, так и разные домены / поддомены на одном порту.

2. Итак, вы хотите сказать, что если у меня есть поддомен, например test.domain.com , я могу обслуживать два веб-сайта, один для test.domain.com , а другой для test.domain.com:1900 ?

3. Если не используется SSL, оба сервера могут (и должны) прослушивать порт 80, нет необходимости использовать другой. Два разных веб-сайта означают две разные исходные папки, поэтому, если, например, используется test root D:testwebsite; , prod должен использовать другую папку, например root D:prodwebsite; . Кроме того, server_name директива должна быть разной для каждого сервера: server_name domain.com; и server_name mysub.domain.com; .

4. Да — до тех пор, пока вы получаете доступ к своим веб-сайтам через соответствующий порт (указанный в URL-адресе), он будет работать. Если вы не укажете порт в URL-адресе — браузер будет использовать порт 80 для http и 443 для https URL-адресов.