Nginx - 다른 (로컬) 웹사이트에 연결된 하위 도메인 생성

Nginx - 다른 (로컬) 웹사이트에 연결된 하위 도메인 생성

저는 순수 Nginx를 사용하는 Ubuntu 16.04 기반의 DigitalOcean VPS를 가지고 있습니다(저는 DigitalOcean의 DNS 관리 도구를 통해 DNS를 관리합니다). 내 Nginx 환경에는 2개의 사이트가 있습니다 /var/www/html/. 하나는 example.com(HTTPS)이고 다른 하나는 test디렉터리 이름(HTTP)을 가진 도메인 프리 사이트입니다.

하위 도메인을 만드는 방법example.com이로 인해시험? ( test.example.com)?


1) 내 것nginx.conf.

2) 내 example.com사이트 구성:

server {
    root /var/www/html/example.com;
    server_name example.com www.example.com;

    location ~ /\.ht {
        deny all;
    }

    location / {
        index index.php index.html index.htm fastcgi_index;
        try_files $uri $uri =404 $uri/ /index.php?$args;
    }

    location ~*  \.(jpg|jpeg|png|gif|ico|css|js|ttf|woff|pdf)$ {
        expires 365d;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    listen 80; # managed by Certbot

    listen 443 ssl http2; # managed by Certbot
    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.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

    if ($scheme != "https") {
        return 301 https://$host$request_uri;
    } # managed by Certbot

    # Redirect non-https traffic to https
    # if ($scheme != "https") {
    #     return 301 https://$host$request_uri;
    # } # managed by Certbot
}

3) 내 test사이트 구성:

server {
    root /var/www/html/test;

    location ~ /\.ht {
        deny all;
    }

    location / {
        index index.php index.html index.htm fastcgi_index;
        try_files $uri $uri =404 $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    listen 80;
}

고쳐 쓰다:

  • VPS 호스팅 제공업체의 DNS 관리 도구에서는 아무것도 변경하지 않았습니다.
  • 나는 전 세계 모든 사람이 test하위 도메인을 통해 사이트에 액세스할 수 있기를 바랍니다.

답변1

Nginx 및 DNS 환경에서 다른 문서 루트를 사용하여 새 하위 도메인을 올바르게 생성하려면 다음 두 가지 작업을 수행해야 합니다.

  1. 이를 처리하기 위한 추가 server { }블록입니다(항목 3에 이미 있는 블록에 추가).

  2. 다른 하위 도메인의 DNS 레코드가 올바른 웹 서버를 가리키도록 합니다.

제공된 구성에 따라 다음 두 가지 작업을 수행해야 합니다.

  1. 사이트 구성에 지시어 test.example.com가 없습니다 . server_name test.example.com;하나를 추가하고 nginx프로세스를 다시 시작하십시오.

  2. test.example.com홈 도메인의 DNS에 DNS 레코드를 설정합니다(아마도 클라우드 기반 DNS 관리 도구를 통해).

어떤 사이트에 어떤 서버 블록을 사용할지 항상 NGINX에 알려주세요. Ubuntu의 패키지 관리자로서 nginx저는 사람들이 겪는 대부분의 사용자 수준 함정에 대해 잘 알고 있습니다.


당신은 우리에게 이것을주었습니다 :

server {
    root /var/www/html/test;

    location ~ /\.ht {
        deny all;
    }

    location / {
        index index.php index.html index.htm fastcgi_index;
        try_files $uri $uri =404 $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    listen 80;
}

그래서문자 그대로다음 root줄을 앞에 추가하세요 .

server_name test.example.com;

...그리고 다음 구성 파일을 얻게 됩니다.

server {
    root /var/www/html/test;
    server_name test.example.com;

    location ~ /\.ht {
        deny all;
    }

    location / {
        index index.php index.html index.htm fastcgi_index;
        try_files $uri $uri =404 $uri/ /index.php?$args;
    }

    location ~ \.php$ {
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }

    listen 80;
}

관련 정보