Nginx
Nginx是一款由C语言编写的高性能、轻量级的HTTP和反向代理服务器,同时也是一款IMAP/POP3/SMTP服务器。
- nginx.conf:Nginx核心配置文件,linux下默认安装在
/etc/nginx/
# Nginx所用用户和组,window下不指定
user www-data;
# 工作的子进程数量(通常等于CPU数量或者2倍于CPU)
worker_processes auto;
# pid存放文件
pid /run/nginx.pid;
# 简化调试 此指令不得用于生产环境
#master_process off;
# 简化调试 此指令可以用到生产环境
#daemon off;
# 最大文件描述符
worker_rlimit_nofile 51200;
events {
# 使用网络IO模型linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
#use epoll;
# 允许最大连接数
worker_connections 1024;
# 此指令的作用是立即接受所有连接放到监听队列中,使得Nginx Worker能够在获得新连接通知时尽可能多的接受连接
#multi_accept on;
}
# load modules compiled as Dynamic Shared Object (DSO)
#
#dso {
# load ngx_http_fastcgi_module.so;
# load ngx_http_rewrite_module.so;
#}
http {
# 反向代理相关配置(自行新建),参考下面的proxy.conf
#include /etc/nginx/conf.d/proxy.conf;;
# GZIP压缩相关配置(自行新建),参考下面的gzip.conf
#include /etc/nginx/conf.d//gzip.conf;
##
# Basic Settings
##
sendfile on;
# 在一个数据包里发送所有头文件,而不是一个接一个的发送
tcp_nopush on;
# 不缓存数据,而是一段一段的发送
tcp_nodelay on;
# 设置客户端keep-alive超时时间
keepalive_timeout 65;
types_hash_max_size 2048;
client_header_timeout 10;
client_body_timeout 10;
send_timeout 10;
client_header_buffer_size 1k;
large_client_header_buffers 4 4k;
# 允许客户端请求的最大单文件字节数
client_max_body_size 10m;
client_body_in_single_buffer on;
# 缓冲区代理缓冲用户端请求的最大字节数
client_body_buffer_size 128k;
# 关闭Nginx的版本号和系统发行版本显示,默认是on
# server_tokens off;
# server_names_hash_bucket_size 64;
# server_name_in_redirect off;
# 设置文件使用的默认的MIME-type
include /etc/nginx/mime.types;
default_type application/octet-stream;
##
# SSL Settings
##
ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
ssl_prefer_server_ciphers on;
##
# Logging Settings
##
# 自定义access_log日志格式和级别
#log_format main '$remote_addr - $remote_user [$time_local] $request "$status" $body_bytes_sent "$http_referer" "$http_user_agent" "$http_x_forwarded_for"';
# 关闭日志可配置off
# 访问和错误日志存放路径,常见日志级别有[ debug | info | notice | warn | error | crit | alert | emerg ],级别越高记录的信息越少。
access_log /var/log/nginx/access.log main;
error_log /var/log/nginx/error.log notice;
# 负载均衡配置
upstream upstream_test{
# 负载策略,常见有轮询(默认)、指定权重(weight 默认为1.weight越大,负载的权重就越大)、IP绑定(ip_hash)、fair(第三方)、url_hash(第三方)
#ip_hash;
server 127.0.0.1:9090 down; (down 表示当前server暂时不参与负载)
server 127.0.0.1:8080 weight=10;
server 127.0.0.1:8081 weight=5;
server 127.0.0.1:7070 backup; (其它所有的非backup机器down掉或者忙碌时候,请求backup机器)
## Tengine config
#check interval=300 rise=10 fall=10 timeout=100 type=http port=80;
#check_http_send "GET / HTTP/1.0\r\n\r\n";
#check_http_expect_alive http_2xx http_3xx;
## Tengine config
#session_sticky cookie=cookieTest mode=insert;
}
# server配置,同时支持监听80和443端口
server {
listen 80;
# https配置
listen 443 ssl http2; #default_server;
listen [::]:443 ssl http2; #default_server;
ssl_certificate "/etc/nginx/ssh_cert/1_domain.cn_bundle.crt";
ssl_certificate_key "/etc/nginx/ssh_cert/2_domain.cn.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
# 可使用通配符形式配置,如*.domain.com;
server_name domain.com www.domain.com;;
# 如果访问时没有加www,则跳转至www.domain.com
if ($host !~* www.domain.com) {
rewrite ^(.*)$ http://www.domain.com/$1 permanent;
}
location / {
# 指定目录位置
root /etc/nginx/;
# 开启目录浏览
autoindex on;
# 默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
autoindex_exact_size off;
# 默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
autoindex_localtime on;
# 10m之后下载速度为10k
#limit_rate_after 10m;
#limit_rate 10k;
}
# 根据User-Agent过滤网络爬虫
location /spider {
if ($http_user_agent ~* "python|curl|java|wget|httpclient|okhttp") {
return 503;
}
}
location /proxy {
proxy_pass http://upstream_test;
# 配置跨域访问
add_header 'Access-Control-Allow-Headers' 'Content-Type';
add_header 'Access-Control-Allow-Origin' '*';