本篇博客系轉載,有刪改,原文章:前nginx後Apache+Node反向代理 。
場景
有三個網站:
- localhost:8080
- localhost:9000
- localhost:8000
使用 nginx 設置,都使用80端口,通過不同的二級域名進行訪問:
- 當訪問
xxx.domain.com
的時候代理到localhost:8080
- 當訪問
yyy.domain.com
的時候代理到localhost:9000
- 當訪問
zzz.domain.com
的時候代理到localhost:8000
Apache 配置各站點
注:這一步,由於我真實環境中只有一個使用 Apache 作爲服務器的站點,因此配置僅僅修改了
/etc/httpd/conf/httpd.conf
文件,監聽 4000 端口,並修改字段了AllowOverride
爲All
。
修改 httpd.conf 文件
我在centos
服務器上使用 yum 包管理工具安裝的 Apache 配置位於
/etc/httpd/conf/httpd.conf
設置三個虛擬主機,修改配置文件,去掉加載虛擬主機配置的註釋 #
Include /private/etc/apache2/extra/httpd-vhosts.conf
監聽對應的端口(不要監聽80了,一會兒交給nginx)
Listen 8000
Listen 8080
Listen 9000
修改httpd-vhosts.conf
虛擬主機的配置文件在
/etc/apache2/extra/httpd-vhosts.conf
添加虛擬主機節點,類似這樣來三個
<VirtualHost *:8080>
DocumentRoot "/path"
ServerName xxx
<Directory "/path">
Options Indexes FollowSymLinks
AllowOverride All
Order deny,allow
Allow from all
</Directory>
</VirtualHost>
修改 hosts 文件
如果服務器在本地,我們還需要把域名配置到localhost,hosts的配置文件在
/etc/hosts
簡單添加一下我們的三個主機
localhost xxx.domain.com yyy.domain.com zzz.domain.com
修改 nginx 配置文件
新建單獨配置文件於 /etc/nginx/conf.d/new_file.conf
配置虛擬主機 × 3:
server {
listen 80;
listen [::]:80;
server_name xxx.domain.com;
location / {
proxy_pass http://0.0.0.0:8080;
proxy_set_header Host $host;
}
}
proxy_set_header Host $host
可以使url始終保持配置的 xxx.domain.com
等。
最後重啓 Nginx 和 Apache 即可。