1. 응용 프로그램 시나리오
동일한 서버에 여러 웹 사이트가 구축되는 상황이 자주 발생합니다. 일반적으로 사이트마다 다른 포트를 구성하여 ip:port 형식으로 액세스할 수 있습니다.
하지만 결국 IP를 이용해 접속하는 것은 불편하고, 생생하지도 않고, 기억하기도 쉽지 않습니다. 그런 다음 각 사이트에 서로 다른 도메인 이름을 바인딩할 수 있습니다. (여기서는 공용 네트워크 상황에 대해서만 이야기합니다.) 도메인 이름이 하나만 있어도 nginx를 사용하면 쉽게 달성할 수 있는 여러 개의 2단계 도메인 이름을 설정할 수 있습니다.
2. 기본 요구 사항
일반적으로 온라인 튜토리얼에서는 구성 파일에 대한 코드 조각을 직접 게시하여 이것이 괜찮다고 알려줍니다. 하지만 튜토리얼 구성을 본 후 많은 초보자는 블로거처럼 성공할 수 없다는 것을 알았으므로 다음에는 기본 원칙에 대해 이야기하겠습니다.
먼저 관리할 수 있는 도메인 이름이 있어야 합니다. 예를 들어 수천 세대에 걸쳐 여러 하위 도메인 이름을 생성할 수 있는 postmsg.cn이라는 도메인 이름이 있습니다...
둘째, 거기에 액세스 가능한 공용 네트워크 서버여야 합니다. 이 서버에 서로 다른 해당 포트를 사용하여 하나, 둘, 셋 또는 4개의 웹 사이트를 구축할 수 있습니다.
그러면 도메인 이름과 사이트의 바인딩이 있는데, 당근 하나와 구덩이 하나입니다. 물론 당근 여러 개와 구덩이 하나를 가질 수도 있습니다...
3. 일반 구성
두 개가 있습니다. 먼저 첫 번째 전제 조건에 대해 이야기해 보겠습니다. 조건도 일부 초보자가 간과하는 경향이 있습니다.
(1) 도메인 이름 구성
모든 사람이 도메인 이름의 레코드 해상도를 공용 네트워크 서버로 지정한다고 생각하는 것이 일반적입니다. 구문 분석 시 IP만 추가할 수 있고 포트 번호는 추가할 수 없습니다. 즉, 기본 포트 80만 사용할 수 있습니다. (도메인 이름 전달은 논의되지 않습니다)
하위 도메인 이름 바인딩을 구현하려면 도메인 이름 확인 중에 올바르게 구성해야 합니다. 그렇지 않으면 nginx에만 의존하면 작동하지 않습니다.
예를 들어 하위 도메인 이름 p.postmsg.cn을 서버의 포트 8001에 바인딩하려면 먼저 p.postmsg.cn 액세스 요청이 서버에 도달할 수 있는지 확인한 다음 nginx가 이를 처리할 수 있는지 확인해야 합니다. .
이때, 도메인 이름 레코드 해석에 p라는 호스트 레코드를 추가하거나 호스트 레코드에 와일드카드 *를 구성하십시오(*.postmsg.cn에 대한 모든 액세스는 해당 서버로 해석되므로 주의해서 사용하십시오). , @ 및 www만 설정하는 것은 불가능합니다. ㅋㅋㅋㅋㅋㅋㅋㅋㅋ int in Figure 1 - 도메인의 예 이름 확인(2) 호스트 구성
도메인 이름에 대한 요청이 호스트에 도달한 후 처리를 위해 모든 것이 nginx로 전달될 수 있습니다.
nginx 구성을 수정할 때 기본 구성 파일(예: 다음 코드 조각에 표시된 대로 /etc/nginx/nginx.conf)에서 직접 수정하거나 특정 디렉토리를 선택한 다음 이 디렉토리에 구성 파일을 포함시킵니다(17행에 표시됨).
http { 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 /var/log/nginx/access.log main; sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; include /etc/nginx/mime.types; default_type application/octet-stream; include /etc/nginx/conf.d/*.conf; }
이것은 nginx가 구성 파일을 읽는 형식입니다. 우리의 구성은 일반적으로 http { } 블록과 서버 블록에 작성되고 서버 블록에 구성됩니다. 방금 언급한 것처럼 서버 블록은 별도의 파일에 작성되어 nginx.conf에 포함될 수 있으며 동시에 중첩된 포함도 지원됩니다.
다음으로 서버 블록이 어떻게 작성되는지 살펴보겠습니다.
server { listen 80; server_name p.postmsg.cn; location / { proxy_pass http://127.0.0.1:8008; proxy_redirect off; proxy_set_header host $host; proxy_set_header x-real-ip $remote_addr; proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; } #access_log logs/p_access.log; }
여기서 server_name은 구성된 도메인 이름에 해당하고, Proxy_pass는 프록시의 실제 주소에 해당합니다.
(3) 참고 1
포트 80은 반드시 Proxy를 담당하는 nginx에 남겨두세요. 하나의 서버에서 apache httpd, nginx, tomcat을 동시에 사용할 수 있지만 도메인 이름 확인은 기본 포트 80만 사용할 수 있고, 기관 담당 동지들이 직접 요청을 받아야 합니다.
(4) 참고 2
즉시 효과가 나타납니다. 일부 친구는 모든 것을 올바르게 구성하고 서비스를 다시 시작했지만 원하는 결과를 볼 수 없다고 생각합니다. 여기에는 세 가지 가능한 요인이 있습니다.
도메인 이름 확인 유효 시간
. Alibaba Cloud의 최소 도메인 이름 유효 시간은 10분이며, 경우에 따라 이 값보다 길어질 수 있습니다.
cmd에서 ipconfig /flushdns 명령을 사용하여 로컬 DNS 캐시를 새로 고칠 수 있습니다.
특히 Google Chrome에서는 찾기가 가장 어려울 수 있습니다. f12 이후 왼쪽 상단 주소 표시줄 옆에 있는 새로 고침 버튼을 마우스 오른쪽 버튼으로 클릭하고 캐시 지우기 및 하드 다시 로드를 클릭합니다.
service nginx restart는 때때로 먼저 중지한 다음 시작하지 않으면 유용하지 않을 수 있습니다.
위 내용은 nginx 리버스 프록시 보조 도메인 이름을 바인딩하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!