引子:
假设我想创业,准备2个网站,展示不同的电影,就要用到nginx多虚拟主机,在一台机器上,安装一个nginx,运行多个虚拟主机,不同的虚拟主机,返回不同的页面
1.多虚拟主机的配置
1.修改nginx底下的conf/nginx.conf ,修改信息如下
#这里可以用vim 命令 yy 复制 和 p 粘贴例:要复制9行 9yy 复制9行 ,用 p 粘贴yy复制的内容
server {
listen 80;
server_name www.bojie.com; #这里是nginx通过这个参数,来定位不同的虚拟主机
location / {
#指明网页根目录在/opt/html/文件夹下
root /data/bojie;
index index.html index.htm;
}
}
server {
listen 80;
server_name www.cj.com; #这里是nginx通过这个参数,来定位不同的虚拟主机
location / {
#指明网页根目录在/opt/html/文件夹下
root /data/cj;
index index.html index.htm;
}
}
2.重新加载nginx配置文件
../sbin/nginx -t #检测语法
../sbin/nginx -s reload #平滑重启
3.准备不同的虚拟主机的站点资料
mkdir -p /data/{bojie,cj}
放入不同的资料如下
├── bojie
│ ├── bojie.jpg
│ └── index.html
└── cj
├── index.html
└── cj.jpg
4.解决本地无域名情况:写入到本地dns解析文件,由于我是在windows中通过浏览器访问,应该在windows的hosts文件中添加记录
hosts文件就是一个本地dns(就是将域名转化成ip地址)强制解析的文件
windows的hosts文件就在这里:C:\Windows\System32\drivers\etc\hosts ,写入如下信息
192.168.0.102 www.bojie.com
192.168.0.102 www.cj.com
5.在windows中,测试访问多域名配置
2.nginx状态模块功能
1.在配置文件中,添加一个参数即可
location /status {
stub_status on;
}
2.平滑重启nginx
./sbin/nginx -s reload
3.访问status页面
http://192.168.0.102/status
通过ab压测命令检测(需要安装相应模块)
n requests #执行的请求数,即一共发起多少请求。
c concurrency #请求并发数。
k #启用HTTP KeepAlive功能,即在一个HTTP会话中执行多个请求。
ab -kc 1000 -n 100000 http://192.168.0.102/
3.nginx访问日志功能:
1.在配置文件中,打开注释,nginx.conf
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log logs/access.log main;
参数详解:
$remote_addr 记录客户端ip
$remote_user 远程用户,没有就是 “-”
$time_local 对应[14/Aug/2018:18:46:52 +0800]
$request 对应请求信息"GET /favicon.ico HTTP/1.1"
$status 状态码
$body_bytes_sent 571字节 请求体的大小
$http_referer 对应“-” 由于是直接输入浏览器就是 -
$http_user_agent 客户端身份信息
$http_x_forwarded_for 记录客户端的来源真实ip 97.64.34.118
打开了功能之后,可一通过access_log查看用户身份信息
192.168.12.60 - - [06/Dec/2018:11:24:04 +0800] "GET / HTTP/1.1" 304 0 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.110 Safari/537.36" "-"
4.nginx的错误页面优化:
1.在配置文件中添加 nginx.conf
server {
listen 80;
server_name www.s14huoying.com;
location / {
#指明网页根目录在/opt/html/文件夹下
root /data/huoying;
index index.html index.htm;
deny 192.168.12.120;
}
error_page 400 401 402 404 /40x.html;
#当请求来自于wwww.s14huoying.com/status/
}
vim 40x.html
<img style='width:100%;height:100%;' src=https://pic1.zhimg.com/80/v2-77a9281a2bebc7a2ea5e02577af266a8_hd.png>
5.提示:如果遇到这个错误E325: ATTENTION Found a swap file by the name ".nginx.conf.swp"
手动删除暂存文件:
因为 .swp 暂存文件是隐藏文件,所以需要使用 ls -a 命令显示出所有文件,然后使用 rm -f .nginx.conf.swp 命令进行删除。
幻想毫无价值,计划渺如尘埃,目标不可能达到。这一切的一切毫无意义——除非我们付诸行动。