nginx作为负载均衡服务器使用,将用户端请求平均负载到多台应用服务器
windows下user不起作用
user root;
nginx启动进程数,默认为1,如果并发较大可以根据CPU线程数修改,超过CPU线程数无用
worker_processes 1;
错误日志文件路径及级别
#error_log logs/error.log;
#error_log logs/error.log notice;
error_log D:/logs/error.log info;
#pid logs/nginx.pid;
events {
# 单个工作进程可以允许同时建立外部连接的数量
worker_connections 1024;
}
socket代理
stream {
# 添加socket转发的代理
upstream socket_proxy {
hash $remote_addr consistent;
# 转发的目的地址和端口
server 192.168.0.200:41571 weight=5 max_fails=3 fail_timeout=30s;
}
# 提供转发的服务,即访问localhost:8016,会跳转至代理socket_proxy指定的转发地址
server {
listen 8016;
proxy_connect_timeout 1s;
proxy_timeout 3s;
proxy_pass socket_proxy;
}
}
http块,HTTP请求的配置均经过此块,一个nginx可以配置多个http块
http {
# 隐藏nignx运行版本
server_tokens off;
include mime.types;
default_type application/octet-stream;
# 客户端请求包上限大小
client_max_body_size 20M;
underscores_in_headers on;
# access_log off;
# 请求日志格式,可以根据需要自己定义
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log D:/logs/access.log main;
sendfile on;
#tcp_nopush on;
# HTTP 是一种无状态协议,客户端向服务器发送一个 TCP 请求,服务端响应完毕后断开连接。
# Nginx 使用 keepalive_timeout 来指定 KeepAlive 的超时时间(timeout)。指定每个 TCP 连接最多可以保持多长时间。
# Nginx 的默认值是 75 秒,有些浏览器最多只保持 60 秒,所以可以设定为 60 秒。若将它设置为 0,就禁止了 keepalive 连接。
keepalive_timeout 0;
#keepalive_timeout 65;
#gzip on;
# 应用节点配置
upstream myserver {
# ip_hash后续同一ip的访问将只会请求同一个服务器,session共享,要求nginx一定是最前端的服务器,假如nginx后端还有其它负载均衡,就不会有作用
# 一旦使用了ip_hash,需要移除一台服务器的时候,需要在这台服务器配置后面加上关键字down,表示不可用,直接移除导致hash错乱;
ip_hash;
server 127.0.0.1:8082 weight=5 max_fails=5 fail_timeout=60s down;
server 127.0.0.1:8083 weight=5 max_fails=5 fail_timeout=60s;
server 127.0.0.1:8084 weight=5 max_fails=5 fail_timeout=60s;
}
server {
listen 8080;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 这里是重点,这样配置才不会丢失端口
proxy_set_header Host $host:$server_port;
location / {
proxy_pass http://myserver/;
proxy_read_timeout 60s;
proxy_send_timeout 60s;
proxy_connect_timeout 10s;
# 以下各项参数的配置会在实际使用过程中进行微调
proxy_set_header Host $host:$server_port;
# proxy_set_header Host www.xiet.com:8080;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header REMOTE-HOST $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 配置此项是为了在多重nginx跳转中,不至于发生接口请求地址异常
# 在使用Nginx做反向代理功能时,有时会出现重定向的url不是我们想要的url,这时候就可以使用proxy_redirect进行url重定向设置
# proxy_redirect http://192.168.0.200:8080/ http://www.xiet.com:8080/;
# 跨越允许,不过这样配置不够安全
# add_header Access-Control-Allow-Headers *;
add_header Access-Control-Allow-Headers $http_access_control_request_headers;
# add_header Access-Control-Allow-Methods *;
add_header Access-Control-Max-Age 3600;
add_header Access-Control-Allow-Credentials true;
add_header Access-Control-Allow-Origin $http_origin;
# add_header Access-Control-Allow-Origin http://www.xiet.com:8080;
# allow 192.168.0.0/24;
# allow 127.0.0.1;
# deny all;
if ($request_method = OPTIONS ) {
return 200;
}
}
#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 443 ssl http2;
server_name abc.mywebsite.com;
client_max_body_size 50m;
#charset koi8-r;
ssl_certificate D:/nginx-1.20.1/cert/8786792_abc.mywebsite.com_nginx/8786792_abc.mywebsite.com.pem;
ssl_certificate_key D:/nginx-1.20.1/cert/8786792_abc.mywebsite.com_nginx/8786792_abc.mywebsite.com.key;
ssl_session_timeout 5m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-Server $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port; #这里是重点,这样配置才不会丢失端口
proxy_redirect http:// https://;
#access_log logs/host.access.log main;
location /login {
proxy_pass http://8.130.36.20:81/login ;
#添加如下3个配置后,当一台server宕机,切换速度会很快,此时配置是1秒
proxy_connect_timeout 10;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
location /sign {
proxy_pass http://8.130.36.20:81/sign ;
#添加如下3个配置后,当一台server宕机,切换速度会很快,此时配置是1秒
proxy_connect_timeout 10;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
location / {
proxy_pass http://8.130.36.20:81/ ;
#添加如下3个配置后,当一台server宕机,切换速度会很快,此时配置是1秒
proxy_connect_timeout 10;
proxy_send_timeout 60;
proxy_read_timeout 60;
}
#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;
}
}
}