启停命令
-
检查配置文件语法
nginx -t
-
热加载,重新加载配置文件
nginx -s reload
-
快速关闭
nginx -s stop
-
等待工作进程处理完成后关闭
nginx -s quit
-
强制关闭
ps -ef|grep nginx kill -9 ThreaID
全局配置
-
工作进程数
worker_processes 1; #工作进程数 根据硬件调整,通常等于CPU数量或者2倍于CPU events { accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off #use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport worker_connections 1024; # 每个工作进程连接数 默认为512 } -
日志输出
access_log logs/access.log access; # 访问日志输出目录 【off】 error_log logs/error.log; # 错误日志输出目录 日志等级:[notice][info][不填] pid logs/nginx.pid; # 进程标识符输出 # 自定义日志格式 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为日志格式的默认值
-
打开文件描述符数目
worker_rlimit_nofile 65535; #现在在Linux 2.6内核下开启文件打开数为65535
-
最大链接数
worker_connections 204800; #没个工作进程的最大连接数量
-
超时时间
keepalive_timeout 60s; #指定每个TCP连接最多可以保持多长时间,单位默认是s client_body_timeout 20s; #指定客户端与服务端建立连接后发送 request body 的超时时间 send_timeout 30s; #服务端向客户端传输数据的超时时间
-
请求头大小配置
client_header_buffer_size 4k; #客户端请求头部的缓冲区大小。 large_client_header_buffers 8 128k; #客户请求头缓冲大小 open_file_cache max=102400 inactive=20s; #指定缓存是否启用
代理配置【http&server】
服务配置
http{
include mime.types; #mime类型 由mime.types文件定义
default_type application/octet-stream;
sendfile on;
client_max_body_size 1024M;
keepalive_timeout 60s
server {
listen 80; #配置监听端口
server_name supconit.***.com; #配置访问域名
location ~* \.(mp3|exe)$ { #对以“mp3或exe”结尾的地址进行负载均衡
#将代理服务器收到的用户信息传到真实服务器上
proxy_set_header Host $host; # 传递域名
proxy_set_header X-Real-IP $remote_addr; # 传递ip
proxy_set_header X-Scheme $scheme; # 传递协议
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
};
location /my/ {
proxy_pass http://my_server/;
proxy_set_header Host $host:$server_port;# 传递域名+端口
proxy_redirect http://my_server/ http://$host:$server_port/my/; #重定向 将【http://my_server/】重定向到【http://$host:$server_port/my/】
}
location ^~/km-portal/ {
try_files $uri $uri/ /index.html;
index index.html index.htm;
root html/hc; # 指定静态文件地址
}
}
}
静态资源代理
1、#静态资源目录使用 root alias
location ~^/files/ {
root /home/;
index index.html index.htm;
# 用root方式,location中的路径会拼加到root的地址后面
# 请求路径为:http://localhost:8080/files/index.jpg 实际访问为:/home/files/index.jpg
}
location ~^/files/ {
alias /home/;
index index.html index.htm;
# 用alias方式,location中的路径不会拼加到alias的地址后面
# 这请求路径为:http://localhost:8080/files/index.jpg 实际访问为:/home/index.jpg
}
2、# 默认访问
# 部署路径:/home/web/my_demo
# 访问路径为:http://localhost:8090/
location / {
try_files $uri $uri/ /index.html;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
root /home/web/my_demo/;
index index.html index.htm;
}
3、 # 带前缀的访问
# 部署路径:/home/web/my_demo
# 访问路径为:http://localhost:8090/my_demo/
# 如果location路径最后没有配置斜杠,则浏览器输入访问地址后,路径最后会自动拼一个斜杠
location ^~/my_demo/ {
try_files $uri $uri/ /my_demo/index.html;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Host $http_host;
root /home/web/;
index index.html index.htm;
}
后台服务代理
#################### 第一种场景(代理地址不加斜杠) ####################
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际代理为:http://127.0.0.1:8000/api/getUser
location ^~/api/ {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际指向为:http://127.0.0.1:8000/api/getUser
location ^~/api {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
#################### 第二种场景(代理地址+斜杠) ####################
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际代理为:http://127.0.0.1:8000/getUser
location ^~/api/ {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际代理为:http://127.0.0.1:8000//getUser
location ^~/api {
proxy_pass http://127.0.0.1:8000/;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
#################### 第三种场景(代理地址+后缀) ####################
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际代理为:http://127.0.0.1:8000/user/getUser
location ^~/api {
proxy_pass http://127.0.0.1:8000/user;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际代理为:http://127.0.0.1:8000/usergetUser
location ^~/api/ {
proxy_pass http://127.0.0.1:8000/user;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
#################### 第四种场景(代理地址+后缀+斜杠) ####################
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际代理为:http://127.0.0.1:8000/user/getUser
location ^~/api/ {
proxy_pass http://127.0.0.1:8000/user/;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
# 请求路径为:http://127.0.0.1:8080/api/getUser 实际代理为:http://127.0.0.1:8000/user//getUser
location ^~/api {
proxy_pass http://127.0.0.1:8000/user/;
proxy_set_header Host $http_host; #后台可以获取到完整的ip+端口号
proxy_set_header X-Real-IP $remote_addr; #后台可以获取到用户访问的真实ip地址
}
负载配置
-
轮询(默认)
upstream bakend { server 127.0.0.1:8027; server 127.0.0.1:8028; server 127.0.0.1:8029; hash $request_uri; } -
weight(指定轮询几率/权重配置)
upstream bakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=15; } -
ip_hash(每个请求按访问ip的hash结果分配,每个访客固定访问一个后端服务器【根据用户ip分配】)
upstream bakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } upstream bakend{#定义负载均衡设备的Ip及设备状态}{ ip_hash; server 127.0.0.1:9090 down; server 127.0.0.1:8080 weight=2; server 127.0.0.1:6060; server 127.0.0.1:7070 backup; } -
fair(【第三方】按后端服务器的响应时间来分配请求,响应时间短的优先分配)
upstream backend { server server1; server server2; fair; } -
url_hash(【第三方】按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器)
upstream backend { server squid1:3128; server squid2:3128; hash $request_uri; hash_method crc32; }#在需要使用负载均衡的server中增加 proxy_pass http://bakend/; upstream backend { ip_hash; server server1 down; #down表示单前的server暂时不参与负载 server server2 weight=10; #weight为weight越大,负载的权重就越大。 server server3 max_fails=10 fail_timeout=60s; #允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream模块定义的错误, fail_timeout:max_fails次失败后,暂停的时间。 server server4 backup; #其它所有的非backup机器down或者忙的时候,请求backup机器 }
4262

被折叠的 条评论
为什么被折叠?



