文章目录
- 一、Nginx主配置文件
- 1、全局配置
- 2、添加 I/O事件配置
- 4.HTTP配置
- 实操模拟部分
- 一、Nginx虚拟主机配置
- 1.1基于域名
- 1.2.基于IP
- 1.3.基于端口
- 二、Nginx访问状态统计
- 三、Nginx配置访问控制
- 1.基于授权的访问控制
- 2.基于客户端的访问控制
一、Nginx主配置文件
位置:/usr/local/nginx/conf/nginx.conf
1、全局配置
#运行用户,若编译时未指定则默认为 nobody
#user nobody;
#工作进程数量,可配置成服务器内核数 * 2,如果网站访问量不大,一般设为1就够用了
worker_processes 4;
#错误日志文件的位置
#error_log logs/error.log;
#PID 文件的位置
#pid logs/nginx.pid;
Nginx的两种进程:
主进程(master process),用于管理工作进程。
工作进程(work process),用于处理用户的连接(一般设置数与cpu总线程数一致)。
修改为与本机cpu数一致
2、添加 I/O事件配置
默认配置
默认只有一行配置,添加use epoll; 表示使用epoll I/O模型,可以提高性能。
在Linux平台上,在进行高并发TCP连接处理时,最高的并发数量都要受到系统对用户单一进程同时可打开文件数量的限制(这是因为系统为每个TCP连接都要创建一个socket句柄,每个socket句柄同时也是一个文件句柄)。
epoll是Linux内核为处理大批句柄而作改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著的减少程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。
由于一个nginx服务器最大可以支持2~3万连接数,我们需要根据本机工作进程数修改每个进程支持的连接数(如我本机设置为8,约可修改为3500)
如提高每个进程的连接数还需执行“ulimit -n 65535”命令临时修改本地每个进程可以同时打开的最大 文件数(永久修改需要修改/etc/security/limits.conf 文件)。
可使用ulimit -a命令查看系统允许当前用户进程打开的文件数限制。
总结:
临时修改内核的大小:ulimit -n
永久修改内核的大小:/etc/security/limits.conf
查看内核的大小:ulimit -a
如果编辑文件时出现“注意”的可以使用:rm -rf /usr/local/nginx/conf/.nginx.conf.swp————删除这个生成的文件
4.HTTP配置
http {
##文件扩展名与文件类型映射表
include mime.types;
##默认文件类型
default_type application/octet-stream;
##日志格式设定,前端给日志信息定位配置
#log_format main '$remote_addr - $remote_user [$time_local] "$request" '
# '$status $body_bytes_sent "$http_referer" '
# '"$http_user_agent" "$http_x_forwarded_for"';
##访问日志位置
#access_log logs/access.log main;
##支持文件发送(下载)
sendfile on;
##此选项允许或禁止使用socket的TCP_CORK的选项(发送数据包前先缓存数据),此选项仅在使用sendfile的时候使用
#tcp_nopush on;
##连接保持超时时间,单位是秒
#keepalive_timeout 0;
keepalive_timeout 65;
##gzip模块设置,设置是否开启gzip压缩输出
#gzip on;
##Web 服务的监听配置
server {
##监听地址及端口
listen 80;
##站点域名,可以有多个,用空格隔开
server_name www.ff.com;
##网页的默认字符集
charset utf-8;
##根目录配置
location / {
##网站根目录的位置/usr/local/nginx/html
root html;
##默认首页文件名
index index.html index.php;
}
##内部错误的反馈页面
error_page 500 502 503 504 /50x.html;
##错误页面配置
location = /50x.html {
root html;
}
}用来记录客户端用户名称;
}
日志格式设定
通常web服务器放在反向代理的后面,这样就不能获取到客户的IP地址了,通过$remote_add拿到的IP地址是反向代理服务器的iP地址。反向代理服务器在转发请求的http头信息中,可以增加x_forwarded_for信息,用以记录原有客户端的IP地址和原来客户端的请求的服务器地址。
location常见配置指令,root、alias、proxy_pass
root(根路径配置):root /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/test/1.html
alias(别名配置):alias /var/www/html
请求www.kgc.com/test/1.html,会返回文件/var/www/html/1.html
proxy_pass(反向代理配置)
实操模拟部分
一、Nginx虚拟主机配置
1.1基于域名
(1)为虚拟主机提供域名解析
配置DNS
修改/etc/hosts文件
(2)为虚拟主机准备网页文档
#创建网页目录
mkdir -p /var/www/html/ikun
mkdir -p /var/www/html/heizi
#编写简易首页html文件
echo "<h1>welcome to www.ikun.com</h1>" > /var/www/html/ikun/index.html
echo "<h1>welcome to www.heizi.com</h1>" > /var/www/html/heizi/index.html
(3)修改nginx配置文件
域名不同,IP地址相同,端口相同
(4)检查语法并重启,访问测试
systemctl restart nginx.service
成功
1.2.基于IP
(1)添加网络接口
(2)修改nginx配置文件
(3)检查语法并重启,访问测试
1.3.基于端口
(1)修改配置文件中监听端口
(2)检查语法并重启,访问测试
成功
二、Nginx访问状态统计
cat /opt/nginx-1.12.0/auto/options 可查看安装软件的所有模块(YES表示已安装)
1.先查看已安装的Nginx是否包含 HTTP_STUB_STATUS 模块
2.修改 nginx.conf 配置文件,指定访问位置并添加 stub_status 配置
先恢复默认配置,再修改nginx.conf
#添加以下配置
location /status {
stub_status on;#代表在当前目录status中,打开状态统计,关闭访问日志记录
access_log off;
3.检查配置并重启服务,测试访问
成功
三、Nginx配置访问控制
1.基于授权的访问控制
(1)下载依赖软件,生成用户密码认证文件,修改密码文件权限
(2)修改主配置文件对应目录,添加认证配置项
(3)检查配置并重启服务,测试访问
成功!
2.基于客户端的访问控制
deny IP/IP 段:拒绝某个 IP 或 IP 段的客户端访问。
allow IP/IP 段:允许某个 IP 或 IP 段的客户端访问。
规则从上往下执行,如匹配则停止,不再往下匹配。
(1)修改配置文件,允许以下两个地址访问,拒绝其他
(2)检查配置并重启服务,测试访问
成功