nginx的作用
- http代理、反向代理:作为web服务最常用的功能
- 负载均衡
- web缓存
nginx.conf内容结构
一般在centos的/etc/nginx/nginx.conf或者/usr/local/nginx/nginx.conf ,它是一个树型结构,依次是:全局块、events块,http块(server块(locaction块))。
... #全局块
events { #events块
...
}
http #http块
{
... #http全局块
server #server块
{
... #server全局块
location [PATTERN] #location块
{
...
}
location [PATTERN]
{
...
}
}
server
{
...
}
... #http全局块
}
真实的阿里nginx.conf
一般在nginx目录下面有一个主目录放nginx.conf,在这个目录下面还有一个子目录services放多个web的应用程序配置,例如A.conf,B.conf,如下:
# nginx.conf是一个树结构 依次是
# 全局
# events
# http
# server
# 注释写了 速融科技定义参数 表示发布时此部分的参数要根据项目实际情况需要修改
# 全局块配置*****1
# 指定哪个用户运行nginx 没有指定时就默认nobody用户
user nobody;
# 调优一,利用好多核cpu资源,nignx工作进程数 按cpu核心数或cpu线程数 ,可以它的倍数,也可以配为1即1个cpu核心,一般最多8个
worker_processes auto;
# 为每个进程分配cpu个数,如果上面配了2个,则这个可以配为 10 01
worker_cpu_affinity auto;
# 一个nginx进程打最多文件描述数目
worker_rlimit_nofile 65536;
# 速融科技定义参数
# 启用或禁用守护进程模式,即后台运行模式,如果前台服务则执行命令nginx -g "damemo off"
# supervisor 管理nginx 必须把daemon on关掉,即,或者通过nginx命令 daemon off关闭方式运行。
# daemon on;
# 存放nginx守护进程的pid文件路径。
# mac的pid地址
# pid /opt/homebrew/var/run/nginx.pid;
# centos服务器上的地址
pid /var/run/nginx.pid;
# error_log /data/logs/error/nginx_error.log info;
# google_perftools_profiles /data/www/tmp/tcmalloc;
# events*******2
events
{
# 使用epoll的I/O模型,用它来高效处理异步事件
# use epoll;
# 调优二:每一个nignx工作进程数允许的最大连接数,缺省是1024,最大是65535
worker_connections 65535;
}
# http配置*******3
http
{
# 指网络资源的媒体类型,也是前端请求的资源类型
include mime.types;
# 默认文件类型, 默认为text/plain
default_type application/octet-stream;
# http中配置对子集server 孙集location均生效
charset utf-8;
# 调优: 调整缓冲区大小*****
server_names_hash_bucket_size 128;
# 客户端请求头部的缓冲区大小,一般参考系统的分页大小
client_header_buffer_size 4k;
large_client_header_buffers 4 32k;
# 速融科技定义参数
#上传文件的大小限制
client_max_body_size 2048m;
# 打开文件的缓存
open_file_cache max=65536 inactive=20s;
# 多长时间检查一次缓存的有效信息
open_file_cache_valid 30s;
# 如果缓存中的文件1次都没有用则移除
open_file_cache_min_uses 1;
# 调优四:磁盘与tcp socket之间的直接拷贝,避免还要缓冲区
sendfile on;
# 解决网络堵塞 nginx在一个数据包里立与发送所有头文件,解决延迟问题
tcp_nopush on;
# http 连接超时,默认是60秒
keepalive_timeout 60;
# nginx不要缓存数据而是一段一段的发送
tcp_nodelay on;
# 安全性 隐藏nginx的版本号和操作系统信息
server_tokens off;
port_in_redirect off;
# 调优 使用FastCGI缓存,避免重复生成页面
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
# 调优三:open gzip,压缩传输量***
# 开启gzip压缩
gzip on;
# 不压缩临界值,大于1k的才压缩
gzip_min_length 1k;
# 压缩缓冲区
gzip_buffers 16 64k;
# 压缩版本(默认1.1,前端如果是squid2.5请使用1.0)
gzip_http_version 1.1;
# 压缩级别 1-10 数字越大压缩越好但时间越长
gzip_comp_level 2;
# 进行压缩的文件类型
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;
# gzip_types text/plain application/x-javascript text/css application/xml application/javascript;
# 跟Squid等缓存服务有关,on的话会在Header里增加"Vary: Accept-Encoding"
gzip_vary on;
# IE6对Gzip不怎么友好,不给它Gzip了
gzip_disable "MSIE [1-6]\.(?!.*SV1)";
#Proxy 反向代理的调优参数
proxy_connect_timeout 600;
proxy_read_timeout 600;
proxy_send_timeout 600;
proxy_buffer_size 16k;
proxy_buffers 4 32k;
proxy_busy_buffers_size 64k;
proxy_temp_file_write_size 64k;
#GeoIp
#geoip_country /etc/nginx/geoip/GeoIP.dat;
#geoip_city /etc/nginx/geoip/GeoLiteCity.dat;
# Limit
limit_req_zone $binary_remote_addr zone=xxx:10m rate=5r/s;
# Log format
log_format access '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" $http_x_forwarded_for';
# server 全局块********4
# nginx无法匹配任何其它server时,则返回403禁止访问
server
{
listen 80 default;
server_name _;
return 403;
}
# server块配置 ****
# 支持全局配置+多配置文件 导入其它路径下的配置文件 这样有利于管理, 缺省nginx下面有一个子目录servers,重新命名了vhosts而已
include servers/*.conf;
}
某一个web应用程序,例如vue发布后的dist程序,gwork-web.conf
server
{
# 速融科技定义参数 端口和子域名
listen 80;
# listen 443 ssl ;
server_name gwork.bjsurong.com;
# 若http没有配,server配以后对子集location均生效,location不需要再配charset
charset utf-8;
#ssl on;
#ssl_certificate .../xxxx.crt;
#ssl_certificate_key .../xxxx.key;
#ssl_session_timeout 5m;
#ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
#ssl_ciphers ALL:!DH:!EXPORT:!RC4:+HIGH:+MEDIUM:-LOW:!aNULL:!eNULL;
#ssl_prefer_server_ciphers on;
# 速融科技定义参数,定义vue发布的dist内容,放到服务器哪个目录
location / {
root /data/gwork/gworkweb/dist;
# nginx部署vue刷新401问题
try_files $uri $uri/ /index.html;
index index.html index.htm;
}
# 速融科技定义参数,反向定义前后分离程序,后端程序的ip和端口
location /prod-api/ {
proxy_pass http://127.0.0.1:8080/;
proxy_set_header Host $http_host;
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;
}
location ~* /(WEB-INF|data|\.svn) {
return http://gwork.bjsurong.com;
}
location ~* \.(htacess|tar.gz|tar|zip|sql)$ {
return http://gwork.bjsurong.com;
}
error_page 404 /404.html;
location = /404.html {
root html;
}
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
# 调优 记录访问和错误日志会消耗系统资源
access_log off;
error_log off;
# access_log /data/gwork-log/nginx_log/access/webpc_access.log access;
# error_log /data/gwork-log/nginx_log/error/webpc_error.log crit;
}
```js