2017-01-25 2 views
0

나는 질문에 너무 많은 정보를 추가하고 있지만 나와 함께 견뎌야한다는 것을 알고있다.하위 도메인에 대한 plesk에

Google은 도메인에 대해 Google 사이트를 운영하고 있습니다. - domain1.com은 예를 들어 ip라고 말합니다. - 192.168.1.25. 이제 예를 들어 IP를 통해 실행되는 다른 서버가 있습니다. plesk 패널이있는 192.168.1.26 12.5.30. 우리는 모든 것을 설정하고 제작 작업을 시작할 준비가 될 때까지 을 비공개로 유지하기 위해 domain1.com을 192.168.1.26으로 지정하지 않았습니다. plesk 패널에 domain1.com이라는 도메인을 설정하고 staging.domain1.com을 하위 도메인으로 생성했습니다.

staging.domain1.com을 192.168.1.26으로 지정하도록 로컬 컴퓨터에서 호스트 파일을 수정하여 메인 도메인 -domain1.com이 192.168.1.25 이상으로 실행되는 동안 새 서버에서 웹 사이트에 액세스 할 수 있으며 도메인 1.com으로 액세스 할 수 있습니다.

기본적으로 192.168.1.26IP 이상의 스테이징 환경을 설정하고 있습니다. 우리는 새로운 준비 도메인에서 CentOS 6를 실행하고 plesk 패널의 특정 IP에서 웹 사이트를 실행하도록 방화벽 규칙을 활성화했습니다.

새 서버에 니스를 설정하고 설치했습니다. [. 우리는 이미 PLESK 포럼 광택 요청에 대한 upvoted 한] PLESK에, 우리는 &의 nginx이 포트를 통해 80

> netstat -ntlp | grep -w 80 
tcp  0  0 0.0.0.0:80     0.0.0.0:*     LISTEN  29795/nginx   
tcp  0  0 :::80      :::*      LISTEN  29795/nginx   

> netstat -ntlp | grep -w 7080 
tcp  0  0 0.0.0.0:7080    0.0.0.0:*     LISTEN  10161/httpd 

우리는 설정 192.168.1.26 같은 기록을 실행 포트 7080을 통해 아파치 실행해야합니까 - staging.domain1을 .com을 DNS에 적용하고 준비 도메인에서 올바른 IP를 얻고 있습니다.

다음
backend default { 
    .host = "192.168.1.26"; 
    .port = "80"; 
} 

backend admin { 
    .host = "192.168.1.26"; 
    .port = "80"; 
    .first_byte_timeout = 18000s; 
    .between_bytes_timeout = 18000s; 
} 

sub vcl_recv { 
    if (req.restarts == 0) { 
     if (req.http.x-forwarded-for) { 
      set req.http.X-Forwarded-For = req.http.X-Forwarded-For + ", " + cl$ 
     } else { 
      set req.http.X-Forwarded-For = client.ip; 
     } 
    } 
    if (req.request != "GET" && 
     req.request != "HEAD" && 
     req.request != "PUT" && 
     req.request != "POST" && 
     req.request != "TRACE" && 
     req.request != "OPTIONS" && 
     req.request != "DELETE" && 
     req.request != "PURGE") { 
     /* Non-RFC2616 or CONNECT which is weird. */ 
     return (pipe); 
    } 

    if (req.http.cookie ~ "adminhtml=") { 
     set req.backend = admin; 
    } 
} 

의/etc/SYSCONFIG/니스 파일입니다 : 우리는 다음과 같이 /etc/varnish/default.vcl 파일 설정

VARNISH_LISTEN_PORT=6081 
VARNISH_ADMIN_LISTEN_PORT=6082 
VARNISH_VCL_CONF=/etc/varnish/default.vcl 

우리는 광택 서비스를 시작을 -의 /etc/init.d를/니스 시작하고 포트 6081 확인 :

> netstat -ntlp | grep -w 6081 
tcp  0  0 0.0.0.0:6081    0.0.0.0:*     LISTEN  23745/varnishd  
tcp  0  0 :::6081      :::*      LISTEN  23745/varnishd  

을하지만 우리는 staging.domain1.com:6081에 액세스하여 사이트를 검사 할 때, 우리는 응답하지만 브라우저에 표시 URL이 domain1.com 가리키는되어지고있다. 그래서 우리는 기본값 인 &에서 .host를 아래처럼 도메인 이름 - staging.domain1.com으로 변경하고 재시작 된 바니시 서비스를 변경했지만 실패했습니다.

backend default { 
    .host = "staging.domain1.com"; 
    .port = "80"; 
} 

backend admin { 
    .host = "staging.domain1.com"; 
    .port = "80"; 
    .first_byte_timeout = 18000s; 
    .between_bytes_timeout = 18000s; 
} 

실제 (하위) 도메인 이름을 추가 한 후 다시 시작하지 않는 이유가 없습니다. 또 다른 일 : 사이트가 포트 80 (즉, nginx)에서 게재됩니다. 이상적으로, 바니시는 포트 80을 통해 작동해야하고 우리는 그렇게하려고했지만 어떻게 든 실패했습니다. 우리는 - https://www.theshell.guru/change-nginx-port-plesk-12-centos-6-6/에서 지침에 따라 포트 8080을 통해 nginx를 실행할 수있었습니다. 기본적으로, 우리는/usr/지방/PSA/관리/conf의/템플릿에서 사용자 정의 디렉토리를 추가하고 8080

  • nginx.php
  • nginxDomainForwarding.php
  • nginxDomainForwardingIpDefault가 넘는 파일 다음 복사와 포트로 업데이트 .PHP
  • nginxDomainVhost.php
  • nginxDomainVhostIpDefault.php
  • nginxWebmail.PHP는

그런 다음 우리는 니스 대신 포트 6081의 80 수신 포트 변경하지만 우리는 니스를 시작할 때, 그것은 직선 쇼에 실패하고 우리의 도메인 - 우리가 즉, 위와 같이 모든 것을 다시 되돌려 staging.domain1.com 그렇게로드 할 수 없습니다

  • 아파치 7080
  • 의 nginx 80
  • 포트 6081에

    • 바니쉬 [80에서 VCL 백엔드] 난 수오 가정 80
    • Nginx에 [default.vcl 파일이 8080 포트에서 컨텐츠를 greb한다] 포트 - - 포트 8080
    • 아파치 - 포트 7080

    먼저

    • 니스 : LD는 다음과 같은 시나리오를 가지고 시나리오에서 와니스가 올바르게 구성되었는지 여부를 확인할 수 없으며 [실제 호스트 이름 대신 IP를 설정 한 경우] 두 번째 시나리오에서는 이상적인 경우이지만 니스 서비스를 시작할 수 없습니다.

      기본적으로 나는 여기에서 잘못된 점을 얻지 못하고 있습니다.

    답변

    0

    우선 Plesk 또는 제어판과 함께 Varnish를 사용하지 마십시오. 이것은 결코 좋은 결과로 이어지지 않을 것입니다. 베어 본 (bare bones) 리눅스 서버에서 사용하면 현재 일어나고있는 일에 대한 더 나은 통찰력을 얻을 수 있습니다.

    둘째로, 거의 거기있었습니다 :) VCL의 백엔드 IP는 IP로 유지되어야했습니다. IP 대신에 도메인을 두는 것은 잘못되었습니다. Varnish는 HTTP 요청의 Host 헤더를 기본 백엔드 서버로 자동 변환합니다. 당신이 URL http://staging-domain:6081/있는 페이지를 열면 그래서, 다음 무슨 일입니다 :

    • 호스트와 HTTP 요청 : 준비 도메인은 니스
    • 에 도달
    • 는 니스는 같은 값으로 아파치/Nginx에에 따라 그것을 전달합니다 .

    처음 문제는 앱/웹 사이트에서 시작한 리디렉션 문제 일 가능성이 큽니다.

    간단히 말해서 http://staging-domain:6081/에 액세스하려하고 설정/구성에 "도메인"이 하드 코드되었으므로 앱이 http://domain/으로 리디렉션되었습니다. 일어날 아주 흔한 일.

    그래서 솔루션에 다음과 같습니다에 IP를 듣고

    • 변경 니스 (80)
    • 변화의 Nginx/즉 다른 포트에 백엔드 웹 서버,
    • 8080에 니스 VCL 백엔드 정의를 조정 무엇이든지 웹 서버의 IP 및 포트, 즉 192.168.1.

      port_in_redirect off; 
      

      : 26

    • 8080

    당신은 또한 Nginx에에 걸쳐 실제 포트를 번역하고 Nginx의 구성에서 리디렉션에서 포트를 비활성화해야 할 수도 있습니다 특정 기본 URL에 웹 응용 프로그램의 설정을 조정 모두 실패하면 전문 설치 서비스를 이용하십시오 :)

    관련 문제