nginx介绍
Nginx是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP代理服务器。
Nginx是一款轻量级的Web服务器/反向代理服务器以及电子邮件代理服务器,并在一个BSD-like协议下发行。由俄罗斯的程序设计师lgor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好
nginx的安装(windows)
去nginx官网下载nginx安装包
nginx是免安装的程序,解压到指定的目录中,即可使用。
目录如下:
需要将该目录中的路径配置到全局环境变量Path中。
启动命令行,输入 nginx -v,出现以下结果即表示安装成功
nginx的常用命令
- nginx 按照默认的配置文件启动nginx服务器(默认的配置文件在
conf/nginx.conf) - nginx -c 配置文件路径 按照指定的配置文件启动nginx服务器
注意该命令启动后,nginx进程就会常驻保留在内存中,命令行窗口即使关闭也不影响
如果修改了nginx的配置文件的话,需要重新载入配置文件
- nginx -s reload 重新加载配置文件
一般nginx的服务器的响应会迟缓,可以多刷新几次。重新加载配置文件的命令应该在nginx启动的情况下执行。
- nginx -s stop 强制停止nginx服务器
- nginx -s quit 优雅的停止nginx服务器(处理完所有的请求之后)
- nginx -s reopen 重启nginx服务器
- killall nginx 杀死所有nginx进程
- nginx -t 检测nginx配置文件是否有语法错误
nginx的配置
基本配置文件(有注释)
########### 每个指令必须有分号结束。#################
#user administrator administrators; #配置用户或者组,默认为nobody nobody。
#worker_processes 2; #允许生成的进程数,默认为1
#pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
events {
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大连接数,默认为512
}
http {
include mime.types; #文件扩展名与文件类型映射表
default_type application/octet-stream; #默认文件类型,默认为text/plain
#access_log off; #取消服务日志
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for'; #自定义格式
access_log log/access.log myFormat; #combined为日志格式的默认值
sendfile on; #允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。
sendfile_max_chunk 100k; #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。
keepalive_timeout 65; #连接超时时间,默认为75s,可以在http,server,location块。
upstream mysvr {
server 127.0.0.1:7878;
server 192.168.10.121:3333 backup; #热备
}
error_page 404 https://www.baidu.com; #错误页
server {
keepalive_requests 120; #单连接请求上限次数。
listen 4545; #监听端口
server_name 127.0.0.1; #监听地址
location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。
#root path; #根目录
#index vv.txt; #设置默认页
proxy_pass http://mysvr; #请求转向mysvr 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
}
常见的几个配置项
$remote_addr与 $http_x_forwarded_for 用以记录客户端的ip地址;$remote_user:用来记录客户端用户名称;$time_local: 用来记录访问时间与时区;$request: 用来记录请求的url与http协议;$status: 用来记录请求状态;成功是200;$body_bytes_sent:记录发送给客户端文件主体内容大小;$http_referer:用来记录从那个页面链接访问过来的;$http_user_agent:记录客户端浏览器的相关信息;
转发功能
nginx代理服务器的转发规则是把请求的地址和目标地址进行字符串拼接(默认不处理
/带来的影响),请求地址中默认不加开头的/