常用命令
- nginx -v
- ngxin -s stop
- nginx 启动
- nginx -s reload 重新加载nginx.conf配置文件
配置文件
1.全局块
从配置文件开始到events块之间的内容为全局块,主要会设置一些影响nginx服务器整体运行的配置指令。
如: worker_processes 1; worker_processes值越大,可以支持的并发处理量也越多
2.event块
涉及的指令主要影响nginx服务器与用户的网络连接,常用的设置包括是否开启多个work process下的网络连接进行序列化,是否允许同时接收多个网络连接,选取哪种事件驱动模型来处理连接请求,每个word peocess可以同时支持的最大连接数等。如worker_connections 1024;
上述例子就表示每个work process支持的最大连接为 1024
这部分的配置对nginx的性能影响较大,在世界中应该灵活配置。
3.http块
3.1 http全局块
http全局块配置的指令包括文件引入,MIME-TYPE定义,日志自定义,连接超时时间,单链接请求数上限等。
3.2 server块
这块和虚拟主机有密切关系,虚拟主机从用户角度看,和一台独立的硬件主机是完全一样的,该技术的产生是为了节省互联网服务器硬件成本。
每个http块可以包含多个server,而每个server块就相当于一个虚拟主机,每个server块也分为全局server块,以及可以同时包含多个location块。
nginx实例
- 反向代理
关键配置:
server {
listen 80;
***server_name localhost;***
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
***proxy_pass http://127.0.0.1:8080;***
index index.html index.htm;
}
#error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
- 反向代理多个
关键配置:
server {
listen 9001;
server_name 192.168.1.222;
location ~ /dec/ {
proxy_pass http://127.0.0.1:8080;
}
location ~ /dev/ {
proxy_pass http://127.0.0.1:8081;
}
}
- 负载均衡
关键配置:
upstream ***myserver***{
server 192.168.1.222:8080;
server 192.168.1.222:8081;
}
server {
listen 80;
server_name 192.168.1.222;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
proxy_pass http://***myserver***;
root html;
index index.html index.htm;
}
- 动静分离:可以简单理解为将动态请求与静态请求分开。
关键配置:
location /www/ {
root /usr/local/data/;
autoindex on;
# proxy_pass http://myserver;
# root html;
index index.html index.htm;
}
location /images{
root /usr/local/data/;
autoindex on;
index index.html index.htm;
}
#autoindex on :是否允许以列表方式访问静态资源(一般不用配置)
负载均衡策略
- 轮询(默认)
- weight :代表权重,默认为1,weight越高分配的客户端就越多。
upstream ***myserver***{
server 192.168.1.222:8080 weight=2;
server 192.168.1.222:8081 weight=3;
}
- ip_hash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题。
upstream ***myserver***{
ip_hash;
server 192.168.1.222:8080;
server 192.168.1.222:8081;
}
- fair(第三方):按后端服务器的响应时间来分配请求,响应时间段的优先分配.
upstream ***myserver***{
fair;
server 192.168.1.222:8080;
server 192.168.1.222:8081;
}
指令说明
- = :用于不包含正则表达式的uri前,要求请求字符串与uri严格匹配,如果匹配成功,就停止继续向下搜索并立即处理请求。
- ~:用于表示uri包含正则表达式,并区分大小写。
- ~*:用于表示uri包含正则表达式,并且不区分大小写。
- ~~:用于不包含正则表达式的uri前,要求nginx服务器找到标识uri和请求字符串匹配度最高的location后,立即使用此location处理请求,而不再使用location块中的正则uri和请求字符串做匹配。
注意:如何uri包含正则表达式,则必须要有 ~ 或者 ~*。