Nginx配置文件
Nginx主配置文件/etc/nginx/nginx.conf是一个纯文本类型的文件,整个配置文件是以区块的形式组织的。一般,每个区块以一对大括号{}来表示开始与结束。
1.CoreModule 核心模块 全局配置
2.EventModule 事件驱动模块
3.HttpCoreModule http内核模块 局部
需了解扩展项
CoreModule层下可以有Event、HTTP
HTTP模块层允许有多个Server层, Server主要用于配置多个网站
Server层又允许有多个Location, Location主要用于定义网站访问路径
CoreModule核心模块
user nginx; #Nginx进程所使用的用户
worker_processes 1; #Nginx运行的work进程数量(建议与CPU数量一致或auto)
error_log /log/nginx/error.log; #Nginx访问错误日志存放路径
pid /var/run/nginx.pid ; #Nginx服务运行后产生的pid进程号
events事件模块
events {
worker_connections 1024; #每个worker进程支持的最大连接数
use epoll; #事件驱动模型, epoll默认
}
http内核模块
//公共的配置定义在http{}
http { //http层开始
…
//使用Server配置网站, 每个Server{}代表一个网站(简称虚拟主机)
server {
listen 80; //监听端口, 默认80
server_name localhost; //提供服务的域名或主机名
access_log host.access.log //访问日志
//控制网站访问路径
location / {
root /usr/share/nginx/html; //存放网站代码路径
index index.php index.html index.htm; //服务器返回的默认页面文件
}
//指定错误代码, 统一定义错误页面, 错误代码重定向到新的Locaiton
error_page 500 502 503 504 /50x.html;
}
服务管理
nginx.service
systemctl 指令 nginx.service
命令工具
nginx
-v 版本
-V 编译选项
-t 语法测试
-s reload
stop
restart
###########################
1.Nginx目录索引
1.Nginx默认是不允许列出整个目录浏览下载。
Syntax: autoindex on | off;
Default: autoindex off;
Context: http, server, location
autoindex常用参数
autoindex_exact_size off;
默认为on, 显示出文件的确切大小,单位是bytes。
修改为off,显示出文件的大概大小,单位是kB或者MB或者GB。
autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。
修改为on, 显示的文件时间为文件的服务器时间。
charset utf-8,gbk;
默认中文目录乱码,添加上解决乱码。(CentOS7.6有bug)
整理:
如果需要做目录索引,或者download页面
location /download {
root /code/www;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
charset utf-8,gbk;
}
实例:在www的站点下,建立一个download页面
1.安装nginx软件包
略
2.创建站点资源
mkdir -p /code/www/download
通过xshell上的xftp,将download页面所需资源(视频、文档、音乐)传到/code/www/download目录下
echo “welcome to hs.com” > /code/www/index.html
3.创建站点配置文件
cd /etc/nginx/conf.d
mv default.conf default.conf.bak
vim www.conf
server{
listen 80;
server_name www.hs.com;
location / {
root /code/www;
index index.html;
}
location /download {
root /code/www;
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
#charset utf-8,gbk;
}
}
4.重启服务
systemctl restart nginx
5.修改hosts文件,添加域名解析
10.0.0.101 www.hs.com
6.通过浏览器访问看效果
2.Nginx状态监控
1).ngx_http_stub_status_module用于展示Nginx连接状态信息, 需要–with-http_stub_status_module模块支持
Syntax: stub_status;
Default: —
Context: server, location
2).配置Nginx status
location /nginx_status {
stub_status;
access_log off;
}
Active connections: 2
server accepts handled requests
4 4 61
Reading: 0 Writing: 1 Waiting: 1
Active connections # 当前活动的连接数
accepts 4 # 当前的TCP总连接数
handled 4 # 成功的TCP连接数
requests 61 # 总的http请求数
实例:在www页面下添加一个状态检测
1)编辑www的站点配置文件,添加stub_status
vim /etc/nginx/conf.d/www.conf
server{
……
location /www_status {
stub_status;
access_log off;
}
}
2).重启服务
systemctl restart nginx
3).客户端访问
http://www.hs.com/www_status
3.Nginx访问控制
1).Nginx基于IP的访问控制
基于IP的访问控制 http_access_modul
//允许配置语法
Syntax: allow address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
//拒绝配置语法
Syntax: deny address | CIDR | unix: | all;
Default: —
Context: http, server, location, limit_except
访问控制规则查看流程:
从上往下,依次匹配,满足就停止
企业中访问控制的思路:
先写允许,默认拒绝所有
location {
……
allow 10.0.0.1;
deny all;
}
先写拒绝,默认允许所有
location {
……
deny 10.0.0.1;
allow all;
}
2).基于用户登陆认证 http_auth_basic_module
//配置语法
Syntax: auth_basic string| off;
Default: auth_basic off;
Context: http, server, location, limit_except
//用户密码记录配置文件
Syntax: auth_basic_user_file file;
Default: -
Context: http, server, location, limit_except
//需要安装依赖组件
[root@web01 ~]# yum install httpd-tools
[root@web01 ~]# htpasswd -b -c /etc/nginx/.auth_conf tanfei 123456
//可在http,server,location下添加如下信息
auth_basic “Auth access Blog Input your Passwd!”;
auth_basic_user_file /etc/nginx/.auth_conf;
实例:针对上面的例子,增加download页面的用户验证
1).创建用户密码认证文件
yum install -y httpd-tools
htpasswd -b -c /etc/nginx/.auth_conf tanfei 123
2).编辑站点配置文件,在对应的location下加入用户验证的代码
vim /etc/nginx/conf.d/www.conf
server{
……
location /download {
……
auth_basic “Auth access Download Page,Input your Passwd!”;
auth_basic_user_file /etc/nginx/.auth_conf;
}
……
}
4.虚拟主机
通过一台设备搭建多个站点
早期,中小型企业没有服务器,只有ISP有大型机房
www.hs.com 首页
game.hs.com 游戏页面
bbs.hs.com 论坛
blog.hs.com 博客
通过不同的域名实现虚拟主机
1.创建站点所需目录及资源
mkdir -p /code/{www,game,bbs,blog}
echo welcome to hs.com > /code/www/index.html
echo bbs > /code/bbs/index.html
echo blog > /code/blog/index.html
游戏页面参考day06的实验
创建自定义日志路径
mkdir /etc/nginx/logs
2.创建站点配置文件
cd /etc/nginx/conf.d
mv default.conf default.conf.bak
vim www.conf
server{
listen 80;
server_name www.hs.com;
access_log “/etc/nginx/logs/www_access.log”;
error_log “/etc/nginx/logs/www_error.log”;
location / {
root /code/www;
index index.html;
}
}
cp www.conf bbs.conf
cp www.conf blog.conf
sed -i ‘s#www#bbs#g’ bbs.conf
sed -i ‘s#www#blog#g’ blog.conf
3.重启nginx服务
systemctl restart nginx
4.修改hosts文件,添加域名解析
10.0.0.101 game.hs.com www.hs.com bbs.hs.com blog.hs.com
5.客户端通过浏览器访问(谷歌或火狐)