nginx优化及配置

vi /usr/local/nginx/conf/nginx.conf
user www www;
worker_processes 4;

#错误日志存放目录
error_log /usr/local/nginx/logs/error.log;
error_log /usr/local/nginx/logs/error.log notice;
error_log /usr/local/nginx/logs/error.log info;

#进程pid存放位置
pid /usr/local/nginx/logs/nginx.pid;

#最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果
worker_rlimit_nofile 51200;

#cpu亲和力配置,让不同的进程使用不同的cpu
worker_cpu_affinity 0001 0010 0100 1000 0001 00100100 1000;

#工作模式及连接数上限
events {
use epoll; #epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1024; #单个后台worker process进程的最大并发链接数
}

#设定http服务器,利用它的反向代理功能提供负载均衡支持
http {
#设定mime类型
include mime.types; #文件扩展名与类型映射表
default_type application/octet-stream; #默认文件类型

include /usr/local/nginx/conf/proxy.conf;

#设置日志模式
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 logs/access.log main;

#设定请求缓存
server_names_hash_bucket_size 128;
client_header_buffer_size 512K;
large_client_header_buffers 4 512k;
#client_max_body_size 100m;

#隐藏响应header和错误通知中的版本号
server_tokens off;

#开启高效传输模式
sendfile on;

#激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量。
tcp_nopush on;

#激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能
tcp_nodelay on;

#连接超时时间,单位是秒
keepalive_timeout 60;

#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压缩功能
gzip on;

#设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能会越压越大。
gzip_min_length 1k;

#压缩缓冲区大小。表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_buffers 4 16k;

#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
gzip_http_version 1.1;

#压缩比率。用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
gzip_comp_level 2;

#用来指定压缩的类型,“text/html”类型总是会被压缩
gzip_types text/plain application/x-javascript text/css application/xml;

#vary header支持。该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。
gzip_vary on;

#开启ssi支持,默认是off
ssi on;
ssi_silent_errors on;

#反向代理负载均衡设定部分
#upstream表示负载服务器池,定义名字为tomcat_pool的服务器池
#此处为你tomcat的地址,可以写多个tomcat地址
upstream tomcat_pool {
server 192.168.254.133:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.254.132:8080 weight=1 max_fails=2 fail_timeout=30s;
server 192.168.254.131:8080 weight=1 max_fails=2 fail_timeout=30s;
#设置由 fail_timeout 定义的时间段内连接该主机的失败次数,以此来断定 fail_timeout 定义的时间段内该主机是否可用。默认情况下这个数值设置为 1。零值的话禁用这个数量的尝试。
#设置在指定时间内连接到主机的失败次数,超过该次数该主机被认为不可用。
#这里是在30s内尝试2次失败即认为主机不可用!
}

#基于域名的虚拟主机
server {

listen       80;   #监听端口
server_name  www.web2.com;#此处替换为你自己的网址,如有多个中间用空格
index index.html index.htm index.php  index.html;#设定访问的默认首页地址
root /home/www/web; #设定网站的资源存放路径 

#charset koi8-r;

#access_log  logs/host.access.log  main;

location / {

root html;

    index index.jsp index.html index.htm;
}

location ~ \.(jsp|jspx|dp)?$ #所有JSP的页面均交由tomcat处理
{
    proxy_set_header  Host $host;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_pass http://tomcat_pool;#转向tomcat处理
}

#设定访问静态文件直接读取不经过tomcat
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
 {
     expires  30d;
 }

 #将符合js,css文件的等设定expries缓存参数,要求浏览器缓存。
 location ~ .*\.(js|css)?$
 {
      expires  30d;  #客户端缓存上述js,css数据30天
 }

access_log  /usr/local/nginx/logs/ubitechtest.log main;#设定访问日志的存放路径  

error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   html;
}

# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
#

#符合php扩展名的请求调度到fcgi server
location ~ \.php$ {
    fastcgi_pass   127.0.0.1:9000;  #抛给本机的9000端口
    fastcgi_index  index.php;   #设定动态首页
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
    #include        fcgi.conf;
}

##add by 20140321#######nginx防sql注入##########
###start####
if ( $query_string ~ ".[\;‘\<\>]." ){
return 444;
}
if ($query_string ~
".(insert|select|delete|update|count|*|%|master|truncate|declare|\‘|\;|and|or|(|)|exec). ")
{
return 444;
}
if ($request_uri ~ "(cost()|(concat()") {
return 444;
}
if ($request_uri ~
"[+|(%20)]union[+|(%20)]") {
return 444;
}
if ($request_uri ~ "[+|(%20)]and[+|(%20)]") {
return 444;
}
if ($request_uri ~
"[+|(%20)]select[+|(%20)]") {
return 444;
}
set $block_file_injections 0;
if ($querystring ~ "[a-zA-Z0-9]=(..//?)+") {
set $block_file_injections 1;
}
if ($querystring ~ "[a-zA-Z0-9]=/([a-z0-9_.]//?)+") {
set $block_file_injections 1;
}
if ($block_file_injections = 1) {
return 448;
}
set $block_common_exploits 0;
if ($query_string ~ "(<|%3C).script.(>|%3E)") {
set $block_common_exploits 1;
}
if ($query_string ~ "GLOBALS(=|[|\%[0-9A-Z]{0,2})") {
set $block_common_exploits 1;
}
if ($query_string ~ "_REQUEST(=|[|\%[0-9A-Z]{0,2})") {
set $block_common_exploits 1;
}
if ($query_string ~ "proc/self/environ") {
set $block_common_exploits 1;
}
if ($querystring ~ "mosConfig[a-zA-Z_]{1,21}(=|\%3D)") {
set $block_common_exploits 1;
}
if ($querystring ~ "base64(en|de)code(.*)") {
set $block_common_exploits 1;
}
if ($block_common_exploits = 1) {
return 444;
}
set $block_spam 0;
if ($query_string ~ "\b(ultram|unicauca|valium|viagra|vicodin|xanax|ypxaieo)\b") {
set $block_spam 1;
}
if ($query_string ~ "\b(erections|hoodia|huronriveracres|impotence|levitra|libido)\b") {
set $block_spam 1;
}
if ($query_string ~ "\b(ambien|blue\spill|cialis|cocaine|ejaculation|erectile)\b") {
set $block_spam 1;
}
if ($query_string ~ "\b(lipitor|phentermin|pro[sz]ac|sandyauer|tramadol|troyhamby)\b") {
set $block_spam 1;
}
if ($block_spam = 1) {
return 444;
}
set $block_user_agents 0;
if ($http_user_agent ~ "Wget") {
set $block_user_agents 1;
}

Disable Akeeba Remote Control 2.5 and earlier

if ($http_user_agent ~ "Indy Library") {
set $block_user_agents 1;
}

Common bandwidth hoggers and hacking tools.

if ($http_user_agent ~ "libwww-perl") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "GetRight") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "GetWeb!") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "Go!Zilla") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "Download Demon") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "Go-Ahead-Got-It") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "TurnitinBot") {
set $block_user_agents 1;
}
if ($http_user_agent ~ "GrabNet") {
set $block_user_agents 1;
}
if ($block_user_agents = 1) {
return 444;
}

###end####
 location ~ ^/list {
     #如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器,实现故障转移。
     proxy_next_upstream http_502 http_504 error timeout invalid_header;
    # proxy_cache cache_one;
     #对不同的HTTP状态码设置不同的缓存时间
     proxy_cache_valid  200 301 302 304 1d;
     #proxy_cache_valid  any 1d;
     #以域名、URI、参数组合成Web缓存的Key值,Nginx根据Key值哈希,存储缓存内容到二级缓存目录内
     proxy_cache_key $host$uri$is_args$args;
     proxy_set_header Host  $host;
     proxy_set_header X-Forwarded-For  $remote_addr;
     proxy_ignore_headers "Cache-Control" "Expires" "Set-Cookie";
     #proxy_ignore_headers Set-Cookie;
     #proxy_hide_header Set-Cookie;
     proxy_pass http://tomcat_pool;
     add_header      Nginx-Cache     "$upstream_cache_status  from  km";

      expires      1d;
    }

#ssl(https)相关设置
#server {
#  listen 13820; #监听端口
#  server_name localhost;
#  charset utf-8; #gbk,utf-8,gb2312,gb18030 可以实现多种编码识别
#  ssl on; #开启ssl
#  ssl_certificate /ls/app/nginx/conf/mgmtxiangqiankeys/server.crt; #服务的证书
#  ssl_certificate_key /ls/app/nginx/conf/mgmtxiangqiankeys/server.key; #服务端key
#  ssl_client_certificate /ls/app/nginx/conf/mgmtxiangqiankeys/ca.crt; #客户端证书
#  ssl_session_timeout 5m; #session超时时间
#  ssl_verify_client on; # 开户客户端证书验证
#  ssl_protocols SSLv2 SSLv3 TLSv1; #允许SSL协议
#  ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; #加密算法
#  ssl_prefer_server_ciphers on; #启动加密算法
#  access_log /lw/logs/nginx/dataadmin.test.com.ssl.access.log access ; #日志格式及日志存放路径
#  error_log /lw/logs/nginx/dataadmin.test.com.ssl.error.log; #错误日志存放路径
#}

# deny access to .htaccess files, if Apache‘s document root
# concurs with nginx‘s one
#
#location ~ /\.ht {
#    deny  all;
#}

}

server {
listen 80;
server_name bbs.yourdomain.com;
location / {
root /home/www/web/springmvc; #设定网站的资源存放路径
index index.jsp index.htm index.html index.do welcome.jsp;#设定访问的默认首页地址
}

location ~ \.(jsp|jspx|dp)?$ #所有JSP的页面均交由tomcat处理
{
    proxy_set_header  Host $host;
    proxy_set_header  X-Real-IP $remote_addr;
    proxy_pass http://tomcat_pool;#转向tomcat处理
}
#设定访问静态文件直接读取不经过tomcat
location ~ .*\.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$
 {
     expires  30d;
 }

 location ~ .*\.(js|css)?$
 {
      expires  1h;
 }
access_log  /usr/local/nginx/logs/ubitechztt.log main;#设定访问日志的存放路径     

error_page   500 502 503 504  /50x.html;
location = /50x.html {
    root   html;
}

}

another virtual host using mix of IP-, name-, and port-based configuration

#
#server {

listen 8000;

listen somename:8080;

server_name somename alias another.alias;

location / {

root html;

index index.html index.htm;

}

#}
}

原文地址:http://blog.51cto.com/10158955/2150983

时间: 2024-10-12 02:56:04

nginx优化及配置的相关文章

CentOS6.5 Nginx优化编译配置

说到Nginx,它真的算是我在运维工作中的好朋友,它优异的性能和极高的工作效率实在是让人大爱,来自internet的报告称其epoll模型能够支持高达50000个并发连接数. Epoll[维基百科]: epoll是Linux下 多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率,因为它会复用文件描述符 集合来传递结果而不用迫使开发者每次等待事件之前都必须重新准备要被侦听的文件描述符集合,另一点原因就是获取事件的时候,它无须遍历

CentOS6.5 Nginx优化编译配置[续]

继续上文CentOS6.5 Nginx优化编译配置本文记录有关Nginx系统环境的一些细节设置,有关Nginx性能调整除了配置文件吻合服务器硬件之前就是关闭不必要的服务.磁盘操作.文件描述符.内核调整等. 1.关闭系统中不需要的服务 ###Centos minimal 本来就是最小安装,这里我也就不提建议了,跟着自己的环境来###[[email protected]-it ~]# chkconfig --list auditd 0:off 1:off 2:on 3:on 4:on 5:on 6:

nginx反向代理配置及优化

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://liuyu.blog.51cto.com/183345/166381 2009-05-26 作者:守住每一天blog:liuyu.blog.51cto.combbs:bbs.linuxtone.orgmsn:liuyubj520#hotmail.comemail:liuyu105#gmail.com 前言:     由于服务器apache抗不住目前的并发.加上前端squid配置后

高流量站点NGINX与PHP-fpm配置优化

导读 使用Nginx搭配PHP已有7年的经历,这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置. 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 1. 将TCP切换为UNIX域套接字UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的数据拷贝和上下文切换). 但有一点需要牢记:仅运行在同一台服务器上的程序可以访问UNIX域套接字(显然没有网络支持). upstream backend { # UNIX domain sock

高流量站点NGINX与PHP-fpm配置优化(译)

使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置. 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的数据拷贝和上下文切换). 但有一点需要牢记:仅运行在同一台服务器上的程序可以访问UNIX域套接字(显然没有网络支持). upstream backend { # UNIX domain sockets server unix:/var/run

nginx虚拟主机配置优化

优化 [[email protected] conf]# mkdir extra [[email protected] conf]# vim nginx.conf [[email protected] conf]# cat nginx.conf worker_processes  1; events {     worker_connections  1024; } http {     include       mime.types;     default_type  applicatio

Nginx 优化配置

nginx 优化配置查看隐藏版本号:curl -I http://192.168.106.138HTTP/1.1 200 okServer:nginx/1.12.0--------------------------------隐藏版本号方法 1-----------------------------------------vim /usr/local/nginx/conf/nginx.confhttp {include mime.types;default_type application/

Nginx如何进行配置优化?

在日常工作的时候,搭建配置Nginx的时候,我们都会做相应的优化,那一般需要做的配置优化有哪些呢?可能有些小伙伴一听到要进行优化,内心难免有些慌. 今天咱们聊聊Nginx进行常规配置优化,这里需要注意一点,在配置完之后,一定要记得重新加载配置,运行nginx -s reload即可 1. Nginx的压缩输出配置 gzip压缩技术可以把页面大小压缩成原来30%以下,页面变小后,用户浏览页面的时候,数据传输速度就会快得多. 绝大多数都是支持解析gzip过的页面,我们主要优化服务器配置 Nginx的

Nginx+PHP安装配置及优化

tengine version:2.0.3 依赖包:pcre version:8.35 安装依赖包[编辑] yum install gcc make -y wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.21.tar.gz tar -zxvf pcre-8.35.tar.gz -C /usr/local/ yum install -y gd gd-devel yum install openssl openssl