Nginx配置部署网站实例
一.编写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).创建站点目录下首页文件
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
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 ]
}
location块
2.rewrite模块功能说明:
(1).实现域名地址信息跳转
(2).用于做为静态
实现类似百度重写域名的功能:baidu.com ===> www.baidu.com
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;
}
rewirte指令操作