Nginx 简单记录
Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。官方测试能够支持5W并发连接,资源消耗低且稳定
正向代理
客户端和目标服务两者之间通过代理间接连接。客户端只需向代理服务器发起请求,并指定自己的目标服务(进行一些设置),由代理转交给指定的目标服务,
同时目标服务器返回的内容转接给代理,由代理返回给客户端,此时目标服务不知道请求的客户端是谁。
反向代理
和正向代理相反,客户端并不能知道反向代理的存在,自己请求的代理服务器对于客户端来说就是自己的目标服务(代理对外表现为目标服务器),客户端不需要进行特别的任何设置就可以反问,由代理决定
向哪台服务器转交请求(转接真实服务器)。
总的说:
一个是代理客户端,为客户端收发请求,使真实客户端对服务器不可见。
一个是代理服务器,为服务器收发请求,使真实服务器对客户端不可见。
负载均衡
Nginx的应用就是实现负载均衡,nginx扮演了反向代理服务器的角色, 将请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则
下载安装
官网:https://nginx.org/en/download.html, 下载window版本
启动nginx:
1) 直接双击该目录下的nginx.exe,即可启动nginx服务器
2) 命令行进入该文件夹,执行nginx命令,也会直接启动nginx服务器
如:
D:/resp_applicationinx-1.13.5> nginx
关闭nginx:
1) 强制停止nginx服务器,如果有未处理的数据,丢弃
D:/resp_applicationinx-1.13.5> nginx -s stop
2) 优雅的停止nginx服务器,如果有未处理的数据,等待处理完成之后停止
D:/resp_applicationinx-1.13.5> nginx -s quit
常见配置
配置文件目录:conf/nginx.conf
配置说明:
...... # 用于进行nginx全局信息的配置
events { # nginx工作模式配置
}
http { # http设置
....
server { # 服务器主机配置
....
location { # 路由配置
....
}
location path {
....
}
location otherpath {
....
}
}
server {
....
location {
....
}
}
upstream name { # 负载均衡配置
....
}
}
配置实例:
########### 每个指令必须有分号结束。################# #worker_processes 2; #允许生成的进程数,默认为1可以等于CPU核心数 #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 weight=1; server 127.0.0.2:7878 weight=2; #weight表示权值,越高分配的概率越大
server 127.0.0.3.7878 down; #down 表示主机暂停服务 } 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 定义的服务器列表 必须和upstream 后面的名字一样 deny 127.0.0.1; #拒绝的ip allow 172.18.5.54; #允许的ip } } }
简单示例
访问127.0.0.1:8001 被转向了预先部署好的2个站点 127.0.0.1:8022 和127.0.0.1:8033