포트 80의 동일한 서버에 있는 Node.js 및 PHP

포트 80의 동일한 서버에 있는 Node.js 및 PHP

Linux 서버의 포트 8080에서 실행되는 node.js 사이트가 있습니다. 또한 동일한 저장 장치의 포트 80에서 실행되는 PHP 사이트(bugzilla)가 있습니다. 현재 내 구성은 다음과 같습니다.

두 사이트 모두 다음과 같이 포트 80에서 실행되기를 원합니다.

그게 가능합니까?

답변1

먼저 컴퓨터에서 두 서비스를 모두 비활성화합니다. 그런 다음 해당 포트를 비정상적인 포트로 변경하고 다시 시작합니다. 예를 들면 다음과 같습니다.

  • PHP 애플리케이션6821

  • NodeJS 애플리케이션6822

꼭 열어보세요 127.0.0.1! 네트워크 인터페이스에서 열면 안 됩니다.


nginx가장 일반적으로 사용 되는 Reverse Proxy. 배포판에 따라 다음 명령 중 하나를 사용하여 설치할 수 있습니다.

Debian 기반 배포판의 경우:

$ sudo apt install nginx

Arch 기반 배포판의 경우:

$ sudo pacman -S nginx

배포판에 따라 완전히 달라지며 패키지는 자체 파일 계층 구조를 가질 수 있습니다. 그래서 저는 이것을 nginx.conf기본 구성 파일로 제공하겠습니다 .원하는 이름으로 원본 구성 파일을 복사하는 것을 잊지 마세요. nginx.conf.origin

$ sudo cp /etc/nginx/nginx.conf /etc/nginx/nginx.conf.origin

이제 를 열고 /etc/nginx/nginx.conf기존 구성을 삭제한 후 다음 구성을 복사하세요.

user nginx;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    keepalive_timeout  15;

    server {
        listen       80 default_server;
        server_name  example.com; 

        location /mynodejs {
            proxy_pass http://127.0.0.1:6822;
        }

        location /bugzilla {
            proxy_pass http://127.0.0.1:6821;
        }
    }
}

참고: 이 구성 파일은 제가 직접 작성한 것이므로 nginx를 실행하려고 할 때 오류가 발생할 수 있다는 점을 고려하시기 바랍니다. 그렇다면 테스트할 수 있도록 여기에 의견을 작성해 주세요.

이제 nginx를 다시 시작하세요! 당신은 당신이 원하는 것을 얻을 것입니다.

답변2

php 애플리케이션은 수정하지 않고 그대로 둘 수 있습니다.

Apache를 웹 서버로 사용하는 경우 프록시 모듈을 활성화해야 합니다. 우분투를 예로 들어보자

a2enmod proxy
a2enmod proxy_http

ProxyPass및 행을 사용하여 ProxyPassReverse가상 호스트를 수정하십시오 .

<VirtualHost *:80>
        ServerName www.example.com
        DocumentRoot "/var/www/www.example.com/htdocs"
        #nodejs app
        ProxyPass /mynodejs http://127.0.0.1:8080/
        ProxyPassReverse /mynodejs http://127.0.0.1:8080/
<Directory "/var/www/www.example.com/htdocs"> 
        Options -Indexes +FollowSymLinks
        AllowOverride All 
        Order allow,deny 
        Allow from all 
</Directory>
        ErrorLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/error_log" 
        CustomLog "|/usr/bin/cronolog /var/www/www.example.com/logs/%Y-%m-%d/access_log" combined 
</VirtualHost>

아파치를 다시 시작하십시오 /etc/init.d/apache2 restart.

관련 정보