mod_proxy
사용하여 node.js와 함께 작동하도록 Apache를 구성하려면 리버스 프록시 역할을하여 별도의 포트에서 실행되는 Node.js 응용 프로그램에 요청을 지시해야합니다. 여기에는 여러 단계가 포함됩니다.
mod_proxy
및 mod_proxy_http
활성화되었는지 확인하십시오. Apache 구성을 확인하십시오 (일반적으로 /etc/apache2/mods-available/
또는 유사한 디렉토리). proxy.load
및 proxy_http.load
파일이 존재하는 경우 /etc/apache2/mods-enabled/
(또는 동등한)에서 상징적 링크를 만들어 활성화해야합니다. 여기에는 종종 a2enmod proxy
및 a2enmod proxy_http
와 같은 명령을 사용한 다음 systemctl restart apache2
(또는 시스템에 대한 적절한 서비스 재시작 명령)가 이어집니다./etc/apache2/sites-available/your_site.conf
) 내에서 <virtualhost></virtualhost>
블록을 정의합니다. 이 블록은 Apache가 Node.js 응용 프로그램에 대한 요청을 처리하는 방법을 지정합니다. 샘플 구성은 다음과 같습니다.<code class="apache"><virtualhost> ServerName yourdomain.com ServerAlias www.yourdomain.com ProxyPreserveHost On ProxyPass / http://localhost:3000/ # Replace 3000 with your Node.js app's port ProxyPassReverse / http://localhost:3000/ <proxy> Order deny,allow Allow from all </proxy> </virtualhost></code>
systemctl restart apache2
와 같은 명령이 포함됩니다. 이 구성은 모든 요청을 /
(및 subpaths) localhost:3000
지시합니다. ProxyPreserveHost On
원래 호스트 헤더가 보존되도록 보장하며, 이는 이에 의존하는 응용 프로그램에 중요합니다. ProxyPassReverse
올바른 도메인 이름을 반영하기 위해 응답의 URL을 업데이트합니다.
Node.js 응용 프로그램에 대한 Apache 리버스 프록시를 설정할 때 몇 가지 일반적인 함정이 발생할 수 있습니다.
ProxyPass
에 지정된 포트가 Node.js 응용 프로그램이 실제로 듣고있는 포트와 일치한다는 두 번 확인하십시오. 불일치는 연결 오류로 이어집니다.mod_proxy
및 mod_proxy_http
가 올바르게 활성화되고로드되어 있는지 확인하십시오. 그렇게하지 않으면 오류가 발생합니다.ProxyPass
및 ProxyPassReverse
지시문의 경로가 정확한지 확인하십시오. 잘못된 경로는 404 개의 오류로 이어질 수 있습니다. mod_proxy
자체는 node.js 응용 프로그램의 성능을 직접 향상시키지 않습니다. 주요 역할은 리버스 프록시,로드 밸런싱 (다중 node.js 인스턴스 포함), SSL 종료 (node.js 응용 프로그램에서 SSL 암호화를 오프로드) 및 잠재적으로 정적 자산을 캐싱하는 것과 같은 작업을 처리하는 것입니다 (전용 캐싱 메커니즘이 더 좋지만). 그러나 간접 성능 이득이 가능합니다.
mod_proxy
하중을 분배하여 응답 성을 향상시키고 개별 서버의 과부하를 방지 할 수 있습니다. 그러나이를 위해서는보다 정교한 구성과 잠재적으로 추가 도구가 필요합니다.mod_proxy
일부 캐싱을 처리 할 수 있지만 전용 캐싱 솔루션 (Varnish 또는 Nginx 등)은 일반적으로 정적 자산에 대한 더 나은 성능을 제공합니다.다른 환경을 처리하려면 각 환경에 대해 별도의 Apache 구성 파일을 관리해야합니다. 구성 파일에서 직접 서버 이름 및 포트와 같은 하드 코딩 환경 별 세부 정보를 피하십시오. 대신 환경 변수 또는 구성 파일을 사용하여 이러한 설정을 관리하십시오.
제안 된 접근법은 다음과 같습니다.
development.conf
, staging.conf
, production.conf
).SetEnv
지시문을 사용하여 이러한 변수에 액세스 할 수 있습니다. 예를 들어:<code class="apache">SetEnv NODE_APP_URL "http://localhost:3000" # For development ProxyPass / ${NODE_APP_URL}/ ProxyPassReverse / ${NODE_APP_URL}/</code>
development.ini
, staging.ini
, production.ini
)에 저장하고 환경에 따라 적절한 파일을로드하기 위해 APACHE의 Include
지시 사항을 사용합니다.development.conf
, staging.conf
또는 production.conf
에 링크하는 sites-enabled
디렉토리가있을 수 있습니다.이 접근 방식을 사용하면 기본 Apache 구성 파일을 수정하지 않고 환경간에 쉽게 전환 할 수 있으며 오류의 위험을 줄일 수 있습니다. 구성을 변경 한 후에는 항상 Apache를 다시 시작해야합니다.
위 내용은 mod_proxy를 사용하여 node.js와 작동하도록 Apache를 어떻게 구성합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!