이 글에서는 주로 Nginx와 Apache 공유 포트 80의 구성 방법을 소개합니다. 물론 Nginx가 포트 80을 놓고 Apache와 경쟁하지 않도록 하려면 이 글의 마지막 부분에 Nginx 포트 수정 방법도 첨부합니다. 참고할 수 있습니다
전형적인 예 Nginx + Apache 응용 솔루션은 Nginx가 포트 80을 차지하고 정적 요청을 필터링한 다음 동적으로 Proxy를 Apache 포트 8080으로 요청하는 것일 수 있습니다. 프록시 역방향 프록시의 장점은 액세스할 때 항상 포트 80이며 방문자가 아무런 차이를 느끼지 못한다는 것입니다.
그러나 일부 응용 프로그램은 실제로 매우 "스마트"합니다. 그들은 Apache가 있는 포트가 8080임을 인식하고 모든 관련 하이퍼링크에 8080을 추가합니다. 이미 죽은 경우에도 정상적으로 액세스할 수 있나요? !
이 문제를 해결하는 방법이 있는데, 포트 80에서 Apache를 실행하는 것입니다. 동일한 서버에 Nginx와 Apache가 있고 두 개의 httpd 서비스가 있는데 둘 다 80인데 충돌이 없나요?
다음은 예시입니다.
Nginx.conf에서
server { listen 80; server_name www.webyang.net; }
구성을 수정합니다.
server { listen 192.168.3.3:80; #指定Nginx只占用某个IP的80端口。 listen 192.168.10.3:80; #如果你服务器中有多个IP,还可以指定多个。 server_name www.webyang.net; }
Nginx에 여러 가상 호스트가 있는 경우 각각을 이렇게 수정해야 합니다.
그런 다음 Apache의 httpd.conf 차례입니다.
원본
Listen 80
을
Listen 127.0.0.1:80
Nginx와 동일하게 Apache가 차지하는 IP 및 포트를 지정합니다.
저장하고 종료한 후 아파치를 다시 시작하면 적용됩니다.
아파치에 가상 호스트가 여러 개 있는 경우. 모두 포트 80에 있는 한 Nginx처럼 하나씩 수정할 필요가 없습니다.
예:
NameVirtualHost *:80 <VirtualHost *:80> ServerAdmin hello@abc.com DocumentRoot /data/web_server/admin ServerName www.webyang.net </VirtualHost>
모든 것이 괜찮을 것이라고 생각하시나요? 아니요.
이러한 아파치는 http://127.0.0.1:80을 통해서만 접근할 수 있으므로 포트 80을 점유한다는 것은 의미가 없습니다. Apache에는 8080을 사용하고 nginx에는 80을 사용하는 것이 좋습니다.
따라서 현재 서버에 여러 IP가 있는 경우 Apache를 127.0.0.1에 바인딩하는 것 외에도 다른 네트워크 카드의 IP를 바인딩하면 문제가 해결됩니다.
하지만 대부분의 사람들은 독립된 IP가 하나뿐이기 때문에 이 방법은 많은 사람들에게 신기루입니다.
아이디어 수정, apache는 여전히 포트 8080입니다. 하나의 nginx 도메인 이름의 conf 파일을 수정하세요
location / { try_files $uri @apache; } location @apache { internal; proxy_pass http://127.0.0.1:8080; } location ~ .*.(php|php5)?$ { proxy_pass http://127.0.0.1:8080; }
이때 도메인 이름의 모든 작업은 정적 파일을 포함하여 Apache로 이동됩니다.
이렇게 쓰는 분들도 많아요:
upstream zend { server 127.0.0.1:8080; } location / { proxy_pass http://zend; 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; proxy_set_header X-Scheme $scheme; } location ~ .*.(php|php5)?$ { proxy_pass http://zend; 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; proxy_set_header X-Scheme $scheme; }
대략 비슷해요.
Nginx 포트 수정
nginx.conf 파일 구현을 수정하세요. Linux에서 이 파일의 경로는 /usr/local/nginx/conf/nginx.conf이고 Windows에서는 설치 디렉터리 confnginx.conf입니다.
server { listen 80; server_name localhost; …… }
Change to
server { listen 81; server_name localhost; location / { root html; index index.html index.htm; } …… }
물론 8080, 8081 등으로 변경할 수 있습니다. 81일 필요는 없지만 iptable이 포트에 대한 액세스를 허용하는지 확인하세요.
위치 구성을 확인하세요.
root html; #根目录,相对于安装目录 index index.html index.htm; #默认主页
기본적으로 Nginx를 통해 액세스할 수 있는 설치 디렉터리의 html 폴더에 파일을 넣습니다.
관련 권장 사항:
위 내용은 Nginx와 Apache 공유 포트 80의 구성 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!