前段时间搭建了两个网站,分别是壁纸网站和个人blog。以这两个网站为例介绍一下如何用一个Nginx配置多个域名共享80端口。
已有资源:
服务器 | 118.24.51.89 |
---|---|
顶级域名 | yypic.top |
二级域名 | blog.yypic.top |
首先需要设置域名解析
在域名管理控制台添加两条解析记录,设置了域名解析才可以用域名访问站点
一级域名解析设置:yypic.top->118.24.51.89
二级域名解析设置:blog.yypic.top->118.24.51.89
添加Ngin主配置文件
user nobody;
#工作进程个数,一般跟服务器cpu核数相等,或者核数的两倍
worker_processes 2;
#单个进程最大连接数
events{
worker_connections 1024;
}
http{
sendfile on;
tcp_nopush on;
tcp_nodelay on;
types_hash_max_size 2048;
keepalive_timeout 65;
gzip on;
#服务器集群
upstream picture_cluster{
server 118.24.51.89:8080;
}
include mime.types;
default_type application/octet-stream;
include /usr/local/nginx/vhosts/*.conf;
}
以上最关键配置:include /usr/local/nginx/vhosts/*.conf; 意思是在http模块里面加入你要引用的虚拟主机配置文件目录。
添加Ngin虚拟主机配置
在Nginx安装目录下建立vhosts文件夹,用来存放所有站点的配置文件。每个站点对应一个虚拟主机配置。
我这里添加了两个配置:blog.conf picture.conf
picture.conf:
server{
listen 80; #端口号
server_name yywallpaper.top www.yywallpaper.top yypic.top www.yypic.top yypic.xyz www.yypic.xyz; #服务名
location /{
proxy_pass http://picture_cluster;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
blog.conf :
server{
listen 80;
#域名,多个用空格隔开
server_name blog.yywallpaper.top blog.yypic.top blog.yypic.xyz;
#配置hexo博客目录
root /usr/local/hexo/public;
location / {
index index.html index.htm;
}
access_log /tmp/logs/nginx/hexo.access.log;
}
添加好虚拟主机配置后,将配置引入到主配置文件中“include /usr/local/nginx/vhosts/*.conf;”,然后启动Nginx即可。
最终请求效果就是:
访问yypic.top->域名解析后访问118.24.51.89:80->请求到达Nginx(监听80端口)->适配域名->将请求转发到picture_cluster既 118.24.51.89:8080->请求到达Tomcat服务器->将Response一层层返回。
访问blog.yypic.top->域名解析后访问118.24.51.89:80->请求到达Nginx(监听80端口)->适配域名->将请求转发到目录/usr/local/hexo/public->返回该目录静态html文件。