Nginx 多站点配置

发布 : 2019-07-22 浏览 :

前言

有时候你想在一台服务器上为不同的域名运行不同的站点,比如www.siteA.com作为博客,www.siteB.com作为论坛。你可以把两个域名的IP都解析到你的服务器上,但是没法在Nginx的根目录里同时运行两个不同的网站。这时候,你就需要使用虚拟目录了。假设你把博客放在/home/user/www/blog下,论坛放在/home/user/www/forum下。

创建站点目录

在nginx安装目录下创建vhost目录,用于存放站点的配置文件

1
2
mkdir vhost
vim site_A.conf

输入以下配置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
server {
listen 80; # 监听端口
server_name www.siteA.com siteA.com; # 站点域名

ssl_certificate /usr/local/nginx/cert/1618221_api.kxjtech.top.pem;
ssl_certificate_key /usr/local/nginx/cert/1618221_api.kxjtech.top.key;

ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;

ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
root /usr/local/nginx/html/api.kxjtech.top/public; # 站点根目录
index index.html index.htm index.php; # 默认导航页

location / {
if (!-e $request_filename) {
rewrite ^(.*)$ /index.php?s=$1 last;
break;
}
}

# 解析PHP配置
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

同siteA一样创建siteB的配置文件

1
vim site_B.conf

只更改这两项即可

1
2
3
4
server {
server_name www.siteB.com siteB.com; # 站点域名
root /home/user/www/forum; # 站点根目录
}

最后在nginx默认配置文件引入siteA,siteB配置文件

1
vim nginx.conf

加上这一段代码

1
include /usr/local/nginx/vhost/*.conf

最后重启nginx即可

1
service nginx restart

禁止IP访问

在nginx默认配置文件加上以下代码

1
2
3
4
5
server { 
listen 80 default;
server_name _;
return 500;
}

以上步骤都成功完成了,就大功告成了,赶紧去试试吧。

知识 & 情怀 | 二者兼得

微信扫一扫, 向我投食

微信扫一扫, 向我投食

支付宝扫一扫, 向我投食

支付宝扫一扫, 向我投食

留下足迹