记录一次Cetnos下Nginx编译安装
1. 安装依赖:
[shell]
yum update -y
#更新下系统,防止版本过低问题
yum install gcc*
#更新下gcc库
yum install pcre pcre-devel openssl openssl-devel libxml2 libxml2-devel libxslt libxslt-devel gd gd-devel perl-devel perl-ExtUtils-Embed geoip geoip-devel
#安装要用到的依赖
<h2>编译参数:</h2>
./configure --prefix=/data/Nginx--with-select_module --with-poll_module --with-threads --with-file-aio --with-http_ssl_module --with-http_v2_module --with-http_realip_module --with-http_addition_module --with-http_xslt_module=dynamic --with-http_image_filter_module=dynamic --with-http_geoip_module=dynamic --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_auth_request_module --with-http_random_index_module --with-http_secure_link_module --with-http_degradation_module --with-http_slice_module --with-http_stub_status_module --with-http_perl_module=dynamic --with-mail --with-stream_ssl_module --with-stream_realip_module --with-stream_geoip_module=dynamic --with-stream_ssl_preread_module --with-cpp_test_module --with-compat --with-pcre-jit --with-debug
[/shell]
Nginx配置详解:
Nginx.conf主配置文件
[shell]
user www;
#Nginx 启动账户
worker_processes auto;
#Nginx 工作进程数,默认为auto,建议为处理器核心数或核心数*2
worker_cpu_affinity auto;
#自动绑定进程到可用CPU
error_log logs/error.log;
#错误日志路径
#error_log logs/error.log error;
#错误日记级别为警告
#error_log logs/error.log info;
#错误日志级别为信息
pid logs/nginx.pid;
#Nginx pid文件路径
worker_rlimit_nofile 1039999;
#最大文件打开数(连接),可设置为系统优化后的ulimit -HSn的结果
events
{
use epoll;
#epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 1039999;
#单个后台worker process进程的最大并发链接数
accept_mutex on;
#如果accept_mutex启用,则工作进程将依次接受新连接。否则,将通知所有工作进程有关新连接的信息,如果新连接的数量很少,则某些工作进程可能只是浪费系统资源。
multi_accept on;
#设置一个进程是否同时接受多个网络连接,默认为off
}
[shell]
http {
include mime.types;
#文件扩展名与类型映射表
default_type application/octet-stream;
#默认文件类型
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;
#设定日志路径
sendfile on;
#开启高效传输模式
#sendfile 指令指定 nginx 是否调用 sendfile 函数(zero copy 方式)来输出文件,对于普通应用,
#必须设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为 off,以平衡磁盘与网络I/O处理速度,降低系统的uptime.
tcp_nopush on;
#激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,
#积极的作用是减少网络报文段的数量
server_tokens off;
#隐藏响应header和错误通知中的版本号
tcp_nodelay on;
#激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能
keepalive_timeout 60;
#连接超时时间
gzip on;
#开启gzip压缩
#gzip_min_length 1k;
#设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,表示不管页面多大都进行压缩。建议设置成大于1K。如果小于1K可能会越压越大。
gzip_buffers 4 16k;
#压缩缓冲区大小。表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果。
gzip_http_version 1.0;
#压缩版本(默认1.1,前端为squid2.5时使用1.0)用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可。
gzip_comp_level 9;
#压缩比率。用来指定GZIP压缩比,1压缩比最小,处理速度最快;9压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源。
gzip_types text/plain application/x-javascript text/css application/xml;
gzip_vary off;
#用来指定压缩的类型,“text/html”类型总是会被压缩
##vary header支持。该选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用
##Squid缓存经过Nginx压缩的数据。
ssi on;
ssi_silent_errors on;
#开启ssi支持,默认是off
limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
#limit模块,可防范一定量的DDOS攻击
#用来存储session会话的状态,如下是为session分配一个名为one的10M的内存存储区,限制了每秒只接受一个ip的一次请求 1r/s
server_names_hash_bucket_size 128;
client_header_buffer_size 512k;
large_client_header_buffers 4 512k;
client_max_body_size 100m;
#设定请求缓存
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;
#FastCGI相关参数:为了改善网站性能:减少资源占用,提高访问速度
include */*/*/*.conf;
#包含子配置文件
}
[/shell]
http配置
[shell]
server {
listen 80;
#http端口
server_name <a href="http://www.7890.ink">www.7890.ink</a>;
#域名
index index.html index.htm index.php;
#默认访问文件
root /data/www/7890.ink/www;
#网站根目录
error_page 404 /404.html;
#404页面地址
charset utf-8;
#字符编码
access_log logs/7890.ink/www.access.log main;
#访问日志地址
location / {
root /data/www/7890.ink/www;
#动态文件根目录
index index.html index.htm index.php;
#PHP默认访问额外你见
error_page 500 502 503 504 /50x.html;
#500系列地址
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root /data/www/7890.ink/www;
#PHP文件根目录
fastcgi_pass 127.0.0.1:9000;
#PHP转发地址
fastcgi_index index.php;
#PHP默认访问文件
fastcgi_param SCRIPT_FILENAME scripts$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME /home/www/7890.ink/www$fastcgi_script_name;
include fastcgi_params;
}
}
}
[/shell]
开启https版本
[shell]
server {
listen 443 ssl;
#监听端口
charset utf-8;
#gbk,utf-8,gb2312,gb18030 可以实现多种编码识别
ssl on;
#开启ssl
ssl_certificate 7890.ink/www/www.7890.ink.crt;
#服务的证书
ssl_certificate_key 7890.ink/www/www.7890.ink.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;
#启动加密算法
listen 80;
#http端口
server_name www.7890.ink;
#域名
index index.html index.htm index.php;
#默认访问文件
root /data/www/7890.ink/www;
#网站根目录
error_page 404 /404.html;
#404页面地址
charset utf-8;
#字符编码
access_log logs/7890.ink/www.access.log main;
#访问日志地址
location / {
root /data/www/7890.ink/www;
#动态文件根目录
index index.html index.htm index.php;
#PHP默认访问额外你见
error_page 500 502 503 504 /50x.html;
#500系列地址
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
root /data/www/7890.ink/www;
#PHP文件根目录
fastcgi_pass 127.0.0.1:9000;
#PHP转发地址
fastcgi_index index.php;
#PHP默认访问文件
fastcgi_param SCRIPT_FILENAME scripts$fastcgi_script_name;
#fastcgi_param SCRIPT_FILENAME /home/www/7890.ink/www$fastcgi_script_name;
include fastcgi_params;
}
}
}
[/shell]