利用nginx服务器搭建网站文件共享服务器
nginx模块功能:ngx_http_autoindex_module(autoindex on)
vim www.conf
server {
listen 80;
server_name www.baidu.com;
location / {
root /html/www;
#index index.html;
autoindex on; #开启nginx站点目录索引功能
}
}
-
index文件注释了没用 需要删除index.html文件或者重命名index.html让他找不到
-
mime.types 媒体资源类型文件作用
grep jpg /etc/nginx/mime.types
- 文件中有的扩展名信息资源,进行访问时会直接看到数据信息
- 文件中没有的扩展名信息资源,进行访问时会直接下载资源
网站页面目录数据中文乱码解决办法:charset
vim www.conf
server {
listen 80;
server_name www.baidu.com;
location / {
root /html/www;
#index index.html;
autoindex on; #开启nginx站点目录索引功能
charset utf-8; #修改目录结构中出现的中文乱码问题
}
}
利用nginx服务配置文件别名功能
-
第一个历程:编写配置文件
server_name www.oldboy.com old.com #old.com就是别名
-
第二个历程:配置好解析信息
vim /etc/hosts 10.0.0.7 www.oldboy.com old.com
-
作用
- 编写网站访问测试
- 定位要访问的网站服务器(集群中访问具体的一台)
利用nginx状态模块功能对网站进行监控
-
编写配置文件
vim state.conf server { listen 998; server_name baidu.com; stub_status; }
-
访问网址
Active connections: 2 server accepts handled requests 58 58 102 Reading: 0 Writing: 1 Waiting: 1
信息 解释 Active connections 激活的连接数信息(有多少用户正在访问) accepts 发送的连接数汇总(综合)(TCP)
重启服务可清0handled 处理的连接数汇总(综合)(TCP) requests 总计的请求数量(HTTP)(一个TCP可发送多个HTTP)
如果要设置为短连接,将配置文件中的keepalive_timeout 设为0Reading nginx服务器读取请求报文的数量 Writing nginx服务器响应报文信息数量 Waiting nginx队列机制,要处理(读取或响应报文进行保存) 监控
nginx日志功能配置
日志切割:/etc/logrotate.d/nginx
-
访问日志(/var/log/nginx/access.log)
server { log_format ‘...‘ '...' access_log /www/wwwlogs/access.log; }
-
log_format:定义日志内容格式(只能放在http中)
-
access_log:调用日志格式(可以放在server里,不在location里面,可以做多个页面的日志)
参数 解释 $remote_addr 显示用户访问源ip地址信息 $remote_user 显示认证的用户名信息 $time_local 访问网站的时间 $request 请求报文的请求行信息 $status 用户访问网站状态码信息 $body_bytes_sent 显示响应的数据尺寸信息(统计流量) $http_referer 记录调用网站资源的连接地址信息(可以防止用户盗链,当流量使用过多时进行检查) $http_user_agent 记录用户使用什么客户端进行访问页面的 $http_x_forwadrded_for 负载均衡 -
日志格式 是指记录哪些选项
默认的日志格式: main log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 如默认的main日志格式,记录这么几项 远程IP- 远程用户/用户时间 请求方法(如GET/POST) 请求体body长度 referer来源信息 http-user-agent用户代理/蜘蛛 ,被转发的请求的原始IP http_x_forwarded_for:在经过代理时,代理把你的本来IP加在此头信息中,传输你的原始IP 2: 声明一个独特的log_format并命名 log_format mylog '$remote_addr- "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; 在下面的server/location,我们就可以引用 mylog 在server段中,这样来声明 Nginx允许针对不同的server做不同的Log ,(有的web服务器不支持,如lighttp) access_log logs/access_8080.log mylog; 声明log log位置 log格式;
-
-
错误日志(/var/log/nginx/error.log)
-
编辑配置文件
errror_log /var/log/nginx/error.log error
-
错误级别(从上到下依次级别越高,设置越低信息越多。推荐设置error)
级别 解释 debug 调试级别,服务运行的状态信息和错误信息详细显示 info 信息级别:只显示重要的运行信息和错误信息 notice 通知级别:更加重要的信息进行通知说明 warn 警告级别:可能出现了一些错误信息,但不影响服务运行 error 错误级别:服务运行已经出现了错误,需要进行纠正 crit 严重级别:必须进行修改调整 alert 严重警告级别:即警告,而且不修进行错误修改 emerg 灾难级别:服务已经不能正常运行
-
-
PS:日志文件信息需要做切割处理
nginx服务location作用说明
所属模块:ngx_http_core_module
location进行匹配(url)
-
错误页面优雅显示:
location / { root /html/www; error_page 404 oldboy.jpg; } #oldboy.jpg要在/html/www里
-
精确匹配(优先级最高01)
location = / { return 404; #返回状态码 }
-
默认匹配(其他的都没匹配到的话,匹配的就是这个,优先级最低)
location / { return 403; }
-
按照目录进行匹配(优先级03)
location /documents { return 501; }
-
优先匹配(优先级02),不是别uri信息中符号信息,不需要转义
location ^~ /images { return 502; }
-
不区分大小写进行匹配(优先级03,匹配以三个为后缀的)
location ~* \.(gif|jpg|jpeg)$ { return 500; }
-
区分大小写
location ~ \.(gif|jpg|jpeg)$ { return 500; }
利用nginx实现页面跳转功能
模块:http_rewrite_module
-
使用方法:
rewrite 匹配的正则信息 替换成什么信息
-
进行配置
server { listen 456; server_name linglong.fun; rewrite ^/(.*) http://linglong.fun/$1 permanent; }
-
重写规则配置
rewrite ^/(.*) http://linglong.fun/$1 permanent; ^/:url (.*):uri $0:url $1:uri
- 永久跳转:permanent 301。会将跳转信息进行缓存
- 临时跳转:redirect 302。不会缓存跳转信息
-
出现无限跳转如何解决:
-
利用不同server区块配置
server { listen 80; server_name oldboy.com; rewrite ^/(.*) http://www.oldboy.com/$1 permanent; } server{ listen 80; server_name www.oldboy.com; access_log /var/log/nginx/www_access/log main; location / { root /html/www; index index.html; } }
-
利用if判断实现打破循环,只对oldboy.com进行跳转
server{ listen 80; server_name www.oldboy.com; if ($host ~* "^oldboy.com$"){ rewrite ^/(.*) http://www.oldboy.com/$1 permanent; } access_log /var/log/nginx/www_access/log main; location / { root /html/www; index index.html; } }
-
直接跳转
server {
listen 80;
server_name oldboy.com;
return 301 http://www.baidu.com;
}