nginx配置(python)

1. Nginx

优点:

高并发量:基于 epoll/kqueue 模型开发,支持高并发量,官方说其支持高达 5w 并发连接数的响应。
内存消耗少:善于处理静态文件,相较于其他web(比如:apache),占用更少的内存及资源。
简单稳定:配置简单(一个conf文件),运行简单(nginx命令),而且运行稳定。
模块化程度高:功能模块插件化设计,可以自由配置相应的功能。
支持Rwrite重写规则:能够根据域名、URL等请求关键点,实现定制化的高质量分发。
低成本:Nginx的负载均衡功能很强大而且免费开源,相较于几十万的硬件负载均衡器成本相当低。
支持多系统:Nginx代码完全用C语言从头写成,可以在各系统上编译并使用。
缺点:

动态处理差:nginx善于处理静态文件,但是处理动态页面相较于Apache之类重量级的web软件能力稍欠缺。
rewrite弱:虽然nginx支持rewrite功能多,但是相较于Apache之类重量级的web软件能力稍欠缺。

2. Nginx安装

1)安装Nginx

方法一:快

apt-get install -y build-essential libssl-dev libtool libpcre3 libpcre3-dev make openssl zlib1g-dev
apt-get install nginx -y
方法二:定制标准高

2)检查效果

netstat -tnulp | grep nginx

3)服务相关命令

启动停止
systemctl start|stop|reload|… nginx
/etc/init.d/nginx start|stop|reload|…
/usr/sbin/nginx … -s stop|reload

查看信息
nginx -V
nginx -v

检查配置文件
nginx -t # 检查默认配置文件
nginx -t -c file.conf # 指定配置文件进行检查
4)移除相关命令

查看和nginx相关软件
dpkg --get-selections|grep nginx

#移除nginx,包括相关文件
apt-get --purge remove nginx
apt-get --purge remove nginx-common
apt-get --purge remove nginx-core

总结:
高性能web服务器、反向代理服务器

1. 配置简介

1)nginx相关目录

工作目录:/etc/nginx
执行文件:/usr/sbin/nginx
日志目录:/var/log/nginx
启动文件:/etc/init.d/nginx
web目录:/var/www/html/,首页文件是index.nginx-debian.html
2)nginx配置文件

默认文件:
/etc/nginx/nginx.conf
其他目录:
/etc/nginx/{sites-available/sites-enabled/conf.d}
文件结构:
全局配置段
http配置段
server配置段 # 项目或者应用
location配置段 # url配置
nginx配置简介

2. nginx配置详解

2.1 全局配置段
主要是全局性的和服务级别的属性配置,常见的主要有以下几种设置:

user # 设置使用用户(worker)
worker_processes # 进行增大并发连接数的处理 跟cpu保持一致 八核设置八个
pid # nginx服务启动时候pid
events # 定义事件相关的属性
worker_connections # 一个进程允许处理的最大连接数
use # 定义使用的内核模型
2.2 http配置段
主要配置server通用的一些配置:

include mime.types; # 文件扩展名与文件类型映射表
default_type application/octet-stream; # 默认文件类型
sendfile on; # 开启高效文件传输模式。
autoindex on; # 开启目录列表访问,合适下载服务器,默认关闭。
tcp_nopush on; # 防止网络阻塞
tcp_nodelay on; # 防止网络阻塞
keepalive_timeout 120; # 长连接超时时间,单位是秒
gzip on; # 开启gzip压缩输出
2.3 server配置段
常见样式:

server {
listen :;
server_name <主机域名>;

}
注:server配置段最重要的属性是listen和server_name,它们都是用于匹配并处理请求的。

1)listen属性

作用:定义server监听的ip和port,当ip和port匹配时候才进行下一步匹配。

形式 描述 示例 完整示例
ip:port 地址精确表示样式 listen 10.10.10.10:99 listen 10.10.10.10:99
ip 自动监听 ip:80地址 listen 10.10.10.10 listen 10.10.10.10:80
port 自动监听 全地址:port listen 99或 [::]:99 listen 0.0.0.0:99
default_server 自动使用默认的地址 listen default_server listen localhost:80
使用原则:

首先将所有样式补全成ip:port,然后匹配,如果匹配server多,那么接着使用server_name匹配。

2)server_name属性

作用:定义server监听的域名,当域名匹配时候才进行下一步操作。

格式 完整样式 前缀正则样式 后缀正则样式 禁止非法域名或IP
形式 www.example.com .example.com www.example. _
使用原则:

优先使用完整样式,然后使用前缀正则样式,最后使用后缀正则样式,如果正则样式相同的时候,匹配最长,否则就走非法规则。 非法域名/IP,表示请求到该主机上一个不存在的IP或者域名。

3)root属性

作用:定义server相应请求的html文件所在目录路径。
表现形式:root /var/www/html;

4)index属性

作用:定义客户端请求时默认返回的文件。
表现形式:index index.html index.htm index.nginx-debian.html;

2.4 location配置段
location主要是根据server匹配到的请求路径和关键字去响应和处理。

语法:

location optional_modifier location_match { … }
location @name { … }
其中:optional_modifier是匹配条件,location_match是匹配的样式,{}是要执行的操作。

1)匹配规则

类型 含义 匹配方式 优先级 样式
=/路径 精确匹配 前缀 1 location = /image {}
^~ 优先匹配 前缀 2 location ^~ /page {}
~ 普通正则-大小写敏感 正则符号 3 location ~ .(jpe?g)$ {}
~* 普通正则-大小写不敏感 正则符号 3 location ~* .(jpe?g)$ {}
空 / 通用匹配 前缀 4 location / {}
@ 内部重定向 前缀 location @name {}
2)使用原则

前提:根据请求url,获取uri,除了域名/IP之外的部分,用于location匹配。

如果有精确匹配,即 =/路径,找到匹配项后,结束匹配。
location = 路径 {} 或者 location 完整路径 {}
如果有优先匹配,即 ^~,找到匹配项后,结束匹配。
location ^~ 路径
如果有正则匹配,即 |,找到匹配项后,不会终止继续匹配,直到找到合适的
location ~
正则字符 {}
如果匹配到多个,则使用location_match最长的。
3)匹配示例

location = / { location ~ .(gif|jpg|png|js|css)$ {
#精确规则A #正则规则D
} }
location = /login { location ~* .png$ {
#精确规则B #正则规则E
} }
location ^~ /static/ { location / {
#优先规则C #通用规则F
} }

4)@name示例 @用来定义一个命名location。主要用于内部重定向,不能用来处理正常的请求。其用法如下:

location / {
try_files $uri $uri/ @custom;
}
location @custom {
# …do something
# custom 命名的 location中不能再嵌套其它的命名location
}
5)关于URL尾部的/有如下注意事项

1 location中的location_match字符有无"/“不受影响。/user/等同/user。
2 对于访问网站域名(http://sswang.com/),尾部有无”/“不受影响。因为浏览器会自动补全”/"。
3 对于访问网站域名后面的路径(http://sswang.com/other/)。尾部的"/“很重要。
URL尾部的”/“表示目录,没有”/"表示文件,而且文件找不到的话,会发生重定向。
/other/:表示服务器会自动去该目录下找对应的默认文件。
/other:表示服务器会先去找other文件,找不到的话会将other当成目录,重定向到/other/,去该目录下找默认文件。

2.5 location核心动作
Nginx的配置语法灵活,可控制度非常高。在0.7以后的版本中加入了一个try_files指令,配合命名location,可以部分替代原本常用的rewrite配置方式,提高解析效率。

1)指令语法

try_files file … uri
try_files file … =code
作用:响应时按顺序查找file,找到则返回file内容,否则的话进行内部重定向(uri)或返回状态码(code)。

2)常见示例

如果能找到指定的uri那么就返回相应的内容,否则的话返回错误状态码404
try_files $uri $uri/ =404;
如果能找到指定的文件1/2.html那么就返回相应的内容,否则的话返回6.html文件内容
try_files 1.html 2.html /6.html;
如果能找到指定的uri那么就返回相应的内容,否则的话就内部重定向到后端名称为@backup的location
try_files $uri @backup;
注意:如果最后一个地址是一个uri的话,那么这个uri必须是存在的,否则的话就出事了

2.6 location常见动作
在location内部常用的功能属性非常多,常见的基本属性、临时跳转、访问控制、目录列表等。

1)基本属性

location / {
# 指定响应请求的文件所在路径
root /var/www/html;
# 指定响应请求的默认文件名称
index index.php index.html index.htm;
# 指定响应请求的文件过期时间,一般用于静态文件
expires 7d;
# 如果root指定的路径下有查找的文件,就返回,否则报错
try_files $uri $uri/ =404;
}
2)临时跳转

location = /test/ {
return 302 http://sswang.com/; # 访问旧url的时候,临时跳转到新url,两个url均不失效
}
3)访问控制

location /nginx-status {
# 开启nginx的状态页面,默认关闭
stub_status on;
# 允许的访问地址
allow 127.0.0.1;
# 默认进制所有访问
deny all;
}
注:该功能依赖于ngx_http_stub_status_module 模块(默认没有安装,需要定制化安装)

4)目录列表

location /upload {
# 指定查看文件列表路径(绝对路径)
alias /var/www/upload/;
# 开启目录自动索引
autoindex on;
# 默认on,显示文件确切大小(bytes)。off表示显示文件的大概大小(kB/MB/…)
autoindex_exact_size off;
# 默认off,显示的文件时间为GMT时间。on表示显示文件的服务器时间
autoindex_localtime on;
}
注:alias路径结尾必须加/。

5)root VS alias

root 和 alias 所起的作用都是指定响应请求所用文件的路径,只是他们有些许的区别。

root 表示 location 匹配内容的相对路径
alias 表示 一个绝对路径。

一般情况下,在location /中配置root,在location /other中配置alias。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值