nginx.conf/配置文件的作用
1、全局模块
worker_processes 1;
工作进程数,设置成服务器内核数的2倍(一般不超过8个,超过8个会降低性能)
#user nobody;
默认的程序用户就是nginx,这个无需注释无需修改
pid /usr/local/nginx/run/nginx.pid;
pid文件的位置
处理进程的过程必然涉及配置文件和展示页面,也就是涉及打开文件的数量。
*soft nproc 65535
能打开的最大进程的软限制是65535,65535是最大数
*hard nproc 65535
*soft nofile 65535
进程打开文件数的最大值65535
*hard nofile 65535
配置要生效只能重启,这是系统初始化的一个环节。
#网页匹配的工作目录的地址和支持打开页面的文件类型。
location / {
root html;
#家目录。nginx工作目录的家目录 /usr/local/nginx/html
#alias也是指匹配nginx的目录 alias要绝对路径
index index.html index.htm;
}
面试题
root和alias之间匹配工作目录的区别?
root的匹配模式是拼接
root的工作目录访问的uir /xy102
location /xy102
/opt/test1/
/opt/test1/xy102/
alias匹配nginx的工作目录,路径是绝对路径
location/xy102
alias/opt/test1/xy102/;
alias只能写在http模块当中server模块的location模块里面
root可以写在server模块,也可以在http,也可以location中
alias匹配工作目录,不能使用重定向功能
全局模块
work_proccesses 1;指定进程数
events模块决定了能够处理的连接数
stream 四层代理模块
http模块转发和处理http请求,静态页面,设置代理(正向代理,反向代理)缓存,定义日志格式,重定向配置
在http模块http里面可以有多个server模块
在server模块当中包含:
location模块
在server当中可以有多个location
实验
1、统计访问状态
Active connections:1
当前活动的连接数
server accepts handled requests
已经处理的连接数
36 36 36
三个数字从左往右依次是:已经处理的连接数;成功建立的连接数;已经处理的请求数
Reading:0 Writing:1Waiting:0
服务端正在从客服端读取请求数据
服务端正在把响应数据发送给客服端
有连接处于空闲状态等待新的请求
2、基于密码的授权进行访问控制
[root@test2 conf]# yum -y install httpd-tools
[root@test1 conf]# vim nginx.conf
location / {
root /opt/test1;
index index.html;
auth_basic "secret";
#开启用户密码验证
auth_basic_user_file /usr/local/nginx/passwd/db;
#使用指定的加密文件
}
[root@test1 conf]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@test1 conf]# systemctl restart nginx
在网页访问192.168.65.10
3、基于客户端的访问控制根据ip地址进行控制
[root@test1 conf]# vim nginx.conf
location / {
root /opt/test1;
index index.html index.htm;
deny 192.168.65.20;
allow all;
}
4、基于域名的nginx主机
[root@test1 conf]# mkdir /var/www/html/wzs
[root@test1 conf]# echo "我真帅!" > /var/www/html/wzs/index.html
server {
listen 80;
server_name www.wzs.com;
charset utf-8;
access_log logs/www.wzs.com.access.log;
location / {
root /var/www/html/wzs;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
映射
[root@test1 conf]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.65.10 www.wzs.com
[root@test1 conf]# curl www.wzs.com
我真帅!
5、基于ip地址实现多个虚拟主机
[root@test1 conf]# vim nginx.conf
location / {
root html;
index index.html index.htm;
deny 192.168.65.20;
#allow all;
}
[root@test2 conf]# curl 192.168.65.10
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx/1.22.0</center>
</body>
</html>
6、基于端口实现多个虚拟主机
[root@test2 conf]# vim nginx.conf
#给每个服务设置其对应的端口
server {
listen 192.168.11.137:80;
server_name www.xy102.com;
charset utf-8;
access_log logs/www.xy102.com.access.log;
location / {
root html;
index index.html index.htm;
}
server {
listen 192.168.11.199:80;
server_name www.flq.com;
charset utf-8;
access_log logs/www.flq.com.access.log;
location / {
root /var/www/html/flq;
index index.html;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
[root@test2 conf]# nginx -t #检查语法
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
[root@test2 conf]# systemctl restart nginx #重启服务
[root@test2 conf]# curl 192.168.11.199:6666
牛啊
[root@test2 conf]# curl 192.168.11.137:8888
nginx默认HTML页面
7、多个主配置文件
[root@test1 nginx]# mkdir conf.d
[root@test1 nginx]# ls
client_body_temp conf.d html passwd.db run scgi_temp
conf fastcgi_temp logs proxy_temp sbin uwsgi_temp
[root@test1 opt]# mkdir -p conf/test1
[root@test1 opt]# mkdir -p conf/test2
[root@test1 conf]# echo "this is test1" > test1/index.html
[root@test1 conf]# echo "this is test2" > test2/index.html
[root@test1 nginx]# cd conf.d
[root@test1 conf.d]# ls
test1.conf
[root@test1 conf.d]# vim test1.conf
server {
listen 2024;
server_name localhost;
location /test1 {
root /opt/conf/;
index index.html;
}
}
server {
listen 2023;
server_name localhost;
location /test2 {
root /opt/conf/;
index index.html;
}
}
[root@test1 conf.d]# netstat -antp | grep nginx
tcp 0 0 0.0.0.0:2023 0.0.0.0:* LISTEN 25668/nginx: master
tcp 0 0 0.0.0.0:2024 0.0.0.0:* LISTEN 25668/nginx: master
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 25668/nginx: master
nginx优化与防盗链
隐藏版本号
[root@test1 conf]# vim nginx.conf
http {
include mime.types;
include /usr/local/nginx/conf.d/*.conf;
default_type application/octet-stream;
server_tokens off; #或者on关闭
#关闭本版号
[root@test1 conf]# systemctl restart nginx
结果显示的版本号,隐藏后不显示
Server:
nginx/1.22.0