文章插图
Nginx配置详解Nginx的配置是在nginx.conf中进行配置的
主要由三部分组成
- 全局块
- events块
- http块
#nginx的用户和用户组#usernobody;# nginx处理并发的数量,值越大,处理并发数量越多# 通常为cpu数量worker_processes1;#全局错误日志定义 位置 级别([ debug | info | notice | warn | error | crit ])#error_loglogs/error.log;#error_loglogs/error.lognotice;#error_loglogs/error.loginfo;#进程文件#pidlogs/nginx.pid;#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致.worker_rlimit_nofile 65535;
events块主要是影响Nginx服务器与用户网络的连接,常用的配置包括是否开启对多worker process下的网络连接进行序列化,是否允许同时接受多个网络连接,选取那种事件驱动模型来处理连接请求,每个worker process可以同时支持的并发数events {#use [ kqueue | rtsig | epoll | /dev/poll | select | poll ];#epoll模型是linux内核中的高性能网络I/O模型,如果在mac上面,就用kqueue模型 。use kqueue;# 每个worker process可以同时支持的连接数为1024# nginx支持的最大并发数是worker_processes*worker_connections#如果是作为反向代理服务器的话,最大并发数是worker_processes*worker_connections/2,因为反向代理服务器,每个并发会建立与客户端的连接和与后端的连接,会占用两个连接worker_connections1024;}
http块Nginx配置中修改最频繁的配置就是http块的配置http块又分为了http全局块和server块
http全局块主要配置的是文件的引入、MIME-TYPE定义、日志自定义、连接超时时间、单链接请求上限等
server块主要是虚拟主机的配置
又分为了server全局块和location块
http {# 文件扩展名与文件类型映射表includemime.types;# 默认文件类型default_typeApplication/octet-stream;#默认编码#charset utf-8;#服务器名字的hash表大小server_names_hash_bucket_size 128;#上传文件大小限制client_header_buffer_size 32k;#设定请求缓冲large_client_header_buffers 4 64k;#设定请求缓冲client_max_body_size 8m;# 开启目录列表访问,合适下载服务器,默认关闭.# 显示目录autoindex on;# 显示文件大小 默认为on,显示出文件的确切大小,单位是bytes 改为off后,显示出文件的大概大小,单位是kB或者MB或者GBautoindex_exact_size on;# 显示文件时间 默认为off,显示的文件时间为GMT时间 改为on后,显示的文件时间为文件的服务器时间autoindex_localtime on;#日志格式化#log_formatmain'$remote_addr - $remote_user [$time_local] "$request" '#'$status $body_bytes_sent "$http_referer" '#'"$http_user_agent" "$http_x_forwarded_for"';# 日志保存 日志的格式使用main#access_loglogs/access.logmain;# sendfile高效传输文件的模式sendfileon;# 将文件一次性一起传输给客户端,提高网络包的传输效率#tcp_nopushon;# 开启实时传输,与tcp_nopush相反,只在长连接下有效#tcp_nodelay on;#连接超时时间#keepalive_timeout0;keepalive_timeout65;# 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;#gzip压缩#gzipon;#允许压缩的页面的最小字节数,页面字节数从header偷得content-length中获取.默认是0,不管页面多大都进行压缩.建议设置成大于1k的字节数,小于1k可能会越压越大gzip_min_length 1k;#表示申请4个单位为16k的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果gzip_buffers 4 16k;#压缩版本(默认1.1,目前大部分浏览器已经支持gzip解压.前端如果是squid2.5请使用1.0)gzip_http_version 1.1;#压缩等级.1压缩比最小,处理速度快.9压缩比最大,比较消耗cpu资源,处理速度最慢,但是因为压缩比最大,所以包最小,传输速度快gzip_comp_level 2;#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn.gzip_types text/plain application/x-JAVAscript text/css application/xml;#选项可以让前端的缓存服务器缓存经过gzip压缩的页面.例如:用squid缓存经过nginx压缩的数据gzip_vary on;#实际的服务器列表#upstream myserver {#server 127.0.0.1:8080;#server 127.0.0.1:8082;#}# 虚拟主机设置server {#监听的端口号listen8080;#访问域名server_namelocalhost;#编码格式#charset koi8-r;#虚拟主机访问日志定义#access_loglogs/host.access.logmain;# url匹配location / {roothtml;indexindex.html index.htm;}#error_page404/404.html;# redirect server error pages to the static page /50x.html#error_page500 502 503 504/50x.html;location = /50x.html {roothtml;}# deny access to .htaccess files, if Apache's document root# concurs with nginx's one# 禁止访问.ht文件#location ~ /.ht {#禁止下载#denyall;#}}server{# 监听端口 HTTPSlisten 443 ssl;server_name ably.com;# 配置域名证书ssl_certificate/server/Certs/certificate.crt;ssl_certificate_key/WebServer/Certs/private.key;ssl_session_cacheshared:SSL:1m;ssl_session_timeout5m;ssl_protocols SSLv2 SSLv3 TLSv1;ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;ssl_prefer_server_cipherson;index index.html index.htm index.php;root /data/www/;location ~ .*.(php|php5)?${fastcgi_pass 127.0.0.1:9000;fastcgi_index index.php;include fastcgi.conf;}# 配置地址拦截转发,解决跨域验证问题location /oauth/{proxy_pass https://localhost:13580/oauth/;proxy_set_header HOST $host;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;}# 图片缓存时间设置location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$ {expires 10d;}# JS和CSS缓存时间设置location ~ .*.(js|css)?$ {expires 1h;}# 日志格式设定log_format access '$remote_addr - $remote_user [$time_local] "$request" ''$status $body_bytes_sent "$http_referer" ''"$http_user_agent" $http_x_forwarded_for';# 定义本虚拟主机的访问日志access_log /var/log/nginx/access.log access;# 设定查看Nginx状态的地址.StubStatus模块能够获取Nginx自上次启动以来的工作状态,此模块非核心模块,需要在Nginx编译安装时手工指定才能使用location /NginxStatus {stub_status on;access_log on;auth_basic "NginxStatus";auth_basic_user_file conf/htpasswd;#htpasswd文件的内容可以用apache提供的htpasswd工具来产生.}}include servers/*;}
推荐阅读
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Raid 0、Raid 1、Raid 5、Raid 10、热备盘配置步骤详解
- 朴树盆景制作和养护方法详解
- Nginx 实现静态资源
- OLED|iQOO Neo6 SE核心配置曝光:80W快充+120Hz高刷
- python基础——数据结构栈的详解
- SpringCloud Zookeeper配置中心详解
- 个推微服务网关架构实践详解
- 理解HTTPS及配置Django+HTTPS开发环境
- 华为二层交换机与路由器对接上网配置示例
- Java中Unsafe使用详解