nginx的作用
静态的web资源服务器
http/https协议的反向代理
IMAP4/POP3协议的反向代理
TCP/UDP协议的请求转发
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。
1 nginx 五种策略
RR:每个请求按照时间顺序逐一分配到不同的后端服务器
权重:指定轮询几率,weight和访问比率成正比
iphash:每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题
urlhash:按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效
fair:按后端服务器的响应时间来分配请求,响应时间短的优先分配。
2 常用命令
nginx -s load
2.1 curl
curl -I -XOPTIONS www.a.com
-I:返回头部信息
-XOPTIONS:返回支持的方法
2.2 ab
ab -c 100 -n 1000 www.a.com
3 配置
user user[group]
指定 worker 进程的运行身份。如果组不指定,默认和用户名同名
worker_processes 4
指定worker进程的数量
worker_rlimit_nofile 65535
worker进程所能够打开的文件数量上限
events {
worker_connections 1024 worker进程所能够打开的最大并发连接数数量
accept_mutex on|off 处理新的连接请求的方法; on指由各个worker轮流处理新请求,off指每个新请求的到达会通知所有的worker进程。但只有一个进程可获得连接
error_log file [level]
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
server {
listen 80;
server_name www.test.com; //虚拟主机的主机名,后可跟多个空白字符隔离的字符串
fastcgi_intercept_errors on;
error_page 404 /404.html; //定义错误页,以指定的响应状态码进行响应
location / { //对URI做精确匹配
root /usr/share/nginx/html/; //设置web资源的路径映射;用于指明请求的URI所对应的文档的目录路径。
}
}
tcp_nodelay on|off ;
sendfile on; //默认off
server_tokens on|off|build|string //是否在响应报文的server首部显示nginx的版本
}
3.1 http负载均衡
/etc/nginx/nginx.conf
user nginx;
worker_processes 2;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
upstream backend {
server 192.168.1.8:8081 weight=5;
server 192.168.1.8:8082 weight=5;
}
log_format main '$remote_addr -
r
e
m
o
t
e
u
s
e
r
[
remote_user [
remoteuser[time_local] KaTeX parse error: Double superscript at position 14: status ' '̲"request"
b
o
d
y
b
y
t
e
s
s
e
n
t
"
body_bytes_sent "
bodybytessent"http_referer" ’
‘“
h
t
t
p
u
s
e
r
a
g
e
n
t
"
"
http_user_agent" "
httpuseragent""http_x_forwarded_for”’;
server {
listen 80;
server_name 192.168.1.8;
location / {
proxy_pass http://backend;
proxy_set_header Host
h
o
s
t
:
host:
host:server_port;
}
}
}
5 参考资料
Nginx可以做什么?看完这篇你就懂了 https://blog.csdn.net/qq_36125138/article/details/84144932
LVS + nginx (keepalived)https://www.cnblogs.com/arjenlee/p/9262737.html