Linux 서버의 포트 8080에서 실행되는 node.js 사이트가 있습니다. 또한 동일한 저장 장치의 포트 80에서 실행되는 PHP 사이트(bugzilla)가 있습니다. 현재 내 구성은 다음과 같습니다.
- http://example.com:8080(node.js 애플리케이션)
- http://example.com/bugzilla(버그질라 홈페이지)
두 사이트 모두 다음과 같이 포트 80에서 실행되기를 원합니다.
- http://example.com/mynodejs(node.js 애플리케이션)
- http://example.com/bugzilla(버그질라 홈페이지)
그게 가능합니까?
답변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
.