>백엔드 개발 >PHP 튜토리얼 >Nginx와 Apache 공유 포트 80의 구성 방법에 대한 자세한 설명

Nginx와 Apache 공유 포트 80의 구성 방법에 대한 자세한 설명

不言
不言원래의
2018-05-05 09:57:392606검색

이 글에서는 주로 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의 비교

위 내용은 Nginx와 Apache 공유 포트 80의 구성 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.