동일한 IP의 Nginx 다른 도메인


127

nginx를 사용하여 동일한 서버에서 2 개의 다른 도메인을 호스팅하고 싶습니다. @ 속성을 통해 두 도메인을 모두이 호스트로 리디렉션했습니다. 2 개의 다른 서버 블록을 구성했지만 두 번째 도메인에 액세스하려고 할 때마다 첫 번째 도메인으로 리디렉션됩니다.

여기 내 구성이 있습니다.

server {
    listen      www.domain1.com:80;
    access_log  /var/log/nginx/host.domain1.access.log  main;
    root /var/www/domain1;
    server_name www.domain1.com;

    location ~ \.php$ {
        # Security: must set cgi.fixpathinfo to 0 in php.ini!
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME         $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include /etc/nginx/fastcgi_params;
    }
}

server {
    listen       www.domain2.com:80;
    access_log  /var/log/nginx/host.domain2.access.log  main;
    root /var/www/domain2;
    server_name www.domain2.com;

    location ~ \.php$ {
        # Security: must set cgi.fixpathinfo to 0 in php.ini!
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME         $document_root$fastcgi_script_name;
        fastcgi_param PATH_INFO $fastcgi_path_info;
        include /etc/nginx/fastcgi_params;
    }
}

이 문제를 어떻게 해결할 수 있습니까? 감사.

답변:


163

"듣기"지시문이 잘못되었습니다. 이 페이지를 참조하십시오 : http://nginx.org/en/docs/http/server_names.html .

그들은

server {
    listen      80;
    server_name www.domain1.com;
    root /var/www/domain1;
}

server {
    listen       80;
    server_name www.domain2.com;
    root /var/www/domain2;
}

참고로 관련 라인 만 포함했습니다. 다른 모든 것은 괜찮아 보였지만 명확성을 위해 삭제했습니다. 이를 테스트하려면 실제로 php를 제공하기 전에 먼저 각 서버에서 텍스트 파일을 제공하는 것이 좋습니다. 그래서 거기에 '루트'지시문을 남겼습니다.


9
이것은 나를 위해 그것을 고쳤습니다. 문제는 내 모두에 있다는 것을 보인다 server {}블록의 sever_name 지시 와일드 카드했다 : .domain1.com.domain2.com. 로 변경 server_name www.domain1.com domain1.com;하고 server_name www.domain2.com domain2.com;지금은 해당 주소를 사용하는 경우 표시하는 각 사이트에 대한 올바른 페이지가 있습니다.
Steve HHH

4
나는 이것이 고대의 논평을 준설하고 있다는 것을 안다. 그러나 나는이 두 서버 블록이 sites-enabled /에서 별도의 구성 파일에있을 수 있다고 가정합니다.
labarna

3
물론 구성을 구성하려는 방법에 따라 다릅니다. 실제 도메인 당 하나의 파일이있는 경향이 있습니다. 각각은 여러 서버 블록을 포함 할 수 있습니다.
aychedee

5
당신은 정말 그렇게하고 싶지 않습니다. www.domain.com 또는 domain.com을 선택하고 하나를 다른 것으로 리디렉션합니다. 서로 다른 두 주소에 동일한 콘텐츠가 있으면 스팸으로 간주되어 검색 순위가 크게 손상 될 수 있습니다.
aychedee

4
그냥 사용할 수도 있습니다 .domain.com. 그것은 특별한 nginx를 와일드 카드와 일치의 domain.com*.domain.com. 참조 : nginx.org/en/docs/http/server_names.html
aychedee
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.