一.编写nginx服务配置
1.nginx语法格式说明:
- 大括号要成对出现
- 每一行指令后面要用分号结尾
- 每一个指令要放置在指定的区块中、
2.实现编写一个网站页面:
conf文件配置如下:
其次在站点目录创建www文件夹并新建index.html文件:
index.html的书写格式应按照html的格式进行编写,注意还要在windows的hosts文件配置域名解析
最后重启nginx即可:/application/nginx/sbin/nginx -s reload
2.实现编写多个网站页面==编写多个虚拟主机(等于一个网站)
(1).编写配置文件
1 server { 2 listen 80; 3 server_name www.etiantian.org; 4 location / { 5 root html/www; 6 index index.html index.htm; 7 } 8 } 9 server { 10 listen 80; 11 server_name bbs.etiantian.org; 12 location / { 13 root html/bbs; 14 index index.html index.htm; 15 } 16 } 17 server { 18 listen 80; 19 server_name blog.etiantian.org; 20 location / { 21 root html/blog; 22 index index.html index.htm; 23 } 24 }
(2).创建站点目录
mkdir -p /application/nginx/html/{www,bbs,blog}
(3).创建站点目录下首页文件
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
for name in www bbs blog; do echo "10.0.0.7 $name.etiantian.org" >/application/nginx/html/$name/index.html; done for name in www bbs blog; do cat /application/nginx/html/$name/index.html; done
(4).进行访问测试
浏览器访问测试:注意需要编写windows主机hosts文件,进行解析
命令行访问测试:利用curl命令在linux系统中访问测试。也需要编写linux主机hosts文件解析
二.虚拟主机配置文件编写方法:
①. 基于域名的虚拟主机配置方法(最常用)
②. 基于端口的虚拟主机配置方法
说明:当你访问的网站域名在虚拟主机配置中不存在时,默认会将第一个虚拟主机的配置页面响应给用户
③. 基于IP地址的虚拟主机配置方法
说明:nginx服务中只要涉及IP地址的修改,都需要重启nginx服务,而不能采用平滑重启
三.Nginx服务日志信息
1.错误日志:
书写格式:error_log file [level];
默认:error_log logs/error.log error;
例如:
补充说明:
错误日志的,默认情况下不指定也没有关系,因为nginx很少有错误日志记录的。
但有时出现问题时,是有必要记录一下错误日志的,方便我们排查问题。
error_log 级别分为 debug, info, notice, warn, error, crit 默认为crit
该级别在日志名后边定义格式如下:
error_log /your/path/error.log crit;
crit 记录的日志最少,而debug记录的日志最多。
如果nginx遇到一些问题,比如502比较频繁出现,但是看默认的error_log并没有看到有意义的信息,
那么就可以调一下错误日志的级别,当你调成error级别时,错误日志记录的内容会更加丰富
2.访问日志
定义日志的格式:
access_log logs/access.log main; --- 调用定义格式信息,生成访问日志
$remote_addr 10.0.0.1 --- 访问客户端的源地址信息
$remote_user - --- 访问客户端认证用户信息 ???
[$time_local] --- 显示访问时间
$request GET / HTTP/1.1 --- 请求行信息
$status 304 --- 状态码信息(304状态码利用缓存显示页面信息)
$body_bytes_sent --- 服务端响应客户端的数据大小信息
$http_referer --- 记录链接到网站的域名信息 ???
$http_user_agent --- 用户访问网站客户端软件标识信息
用户利用客户端浏览器测试访问时,win10默认浏览器会有异常问
$http_x_forwarded_for --- ??? 反向代理
3.日志格式切割:
一般的只要访问nginx都会有nginx日志产生,如果这个日志不及时处理将会很大,因此这里用shell脚本+crontab实现定时切割
实现定时执行脚本:
四.Nginx服务相关区块说明
1.location区块说明:
利用location区块可以用于定位或者匹配网站资源信息
企业需求解决:
搭建好一台nginx的web服务器,配置好内网卡地址与外网卡地址
web服务的网站域名为www.etiantian.org,站点目录为html/www
要求内网用户可以访问网站http://www.etiantian.org/AV资源信息
要求外网用户禁止访问网站http://www.etiantian.org/AV资源信息
(1).编写nginx配置文件
(2).创建测试访问资源
cd /application/nginx/html/www;mkdir AV;echo "AV info" >AV/oldboy.html
(3)重启nginx服务
/application/nginx/sbin/nginx -t
/application/nginx/sbin/nginx -s reload
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
location [ = | ~ | ~* | ^~ ] uri { ... } = --- 精确匹配网站uri资源信息 ~ --- 区分大小写匹配网站uri资源信息 ~* --- 不区分大小写匹配网站uri资源信息 ^~ --- 优先匹配网站uri资源信息 /AV/ --- 指定匹配网站资源目录信息 / --- 默认匹配网站资源信息 ! --- 对匹配的内容进行取反 location = / { [ configuration A ] --- 优先级最高 ① } location / { --- 所有匹配都不满足时候,匹配默认location ④ [ configuration B ] } location /documents/ { --- 根据资源目录进行匹配 ③ [ configuration C ] } location ^~ /images/ { --- 优先匹配 ② [ configuration D ] } location ~* \.(gif|jpg|jpeg)$ { --- 不区分大小写匹配网站资源 ③ [ configuration E ] }
2.rewrite模块功能说明:
(1).实现域名地址信息跳转
(2).用于做为静态
实现类似百度重写域名的功能:baidu.com ===> www.baidu.com
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
rewrite指令实践操作一:(错误) [root@web01 extra]# cat bbs.conf server { listen 80; server_name www.etiantian.org bbs.org; rewrite ^/(.*) http://www.etiantian.org/$1 permanent; root html/bbs; index index.html index.htm; } [root@web01 extra]# curl -L etiantian.org curl: (47) Maximum (50) redirects followed [root@web01 extra]# curl -Lv etiantian.org --- 显示无限循环过程 说明:以上配置进入了无限循环状态 rewrite指令实践操作二:(正确) cat bbs.conf server { listen 80; server_name etiantian.org; rewrite ^/(.*) http://bbs.etiantian.org/$1 permanent; } server { listen 80; server_name bbs.etiantian.org bbs.org; root html/bbs; index index.html index.htm; } rewrite指令实践操作三:(正确) [root@web01 extra]# cat bbs.conf server { listen 80; server_name bbs.etiantian.org bbs.org; if ($host ~* "^etiantian.org$") { rewrite ^/(.*) http://bbs.etiantian.org/$1 permanent; } root html/bbs; index index.html index.htm; }