首页 > 其他 > 详细

nginx编译、优化、配置

时间:2020-12-23 15:12:51      阅读:53      评论:0      收藏:0      [点我收藏+]

**Nginx编译安装**
apt install  libgd-dev 
apt install libgeoip-dev
apt-get install zlib1g-dev
apt install openssl libssl-dev
apt install libpcre3-dev
apt install libpcre3
apt install openssl-devel pcre-devel
apt  install gcc
apt install libgd-dev

./configure --prefix=/apps/nginx  --with-http_ssl_module \
--with-http_v2_module  \    
--with-http_realip_module \    
--with-http_addition_module  \    
--with-http_image_filter_module \ 
--with-http_geoip_module \        
--with-http_gunzip_module \    
--with-http_stub_status_module \     
--with-http_gzip_static_module \ 
--with-pcre \            
--with-stream \        
--with-stream_ssl_module \    
--with-stream_realip_module 

--prefix=/apps/nginx 安装路径
--with-http_ssl_module \ https模块
--with-http_v2_module  \    http版本
--with-http_realip_module \    当本机的nginx处于一个反向代理的后端时获取到真实的用户IP
--with-http_addition_module  \    模块是一个过滤器,可在响应之前和之后添加文本
--with-http_image_filter_module \ 图片文件
--with-http_geoip_module \    读取IP所在地域信息。    
--with-http_gunzip_module \    解压缩
--with-http_stub_status_module \     查看nginx状态信息
--with-http_gzip_static_module \ 压缩
--with-pcre \            编译需要
--with-stream \        负载均衡
--with-stream_ssl_module \    支持https的负载均衡
--with-stream_realip_module     

**nginx默认配置文件优化**
#user  nobody;
worker_processes  auto;
#绑定CPU
worker_cpu_affinity auto
#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#pid        logs/nginx.pid;

events {
#单个进程最大并发连接数 
   worker_connections  1024;
   use epoll;
#同一时刻只有一个请求避免多个睡眠的work进程被唤醒。
   accept_mutex on;
#同时接受所有新的网络连接
   multi_accept on;
}
#最大打开文件数
worker_rlimit_nofile 65535;
#关闭守护进程  docker 前台执行
daemon off;
#daemon on;
#只使用master 进程作工作进程 测试使用
#master_process on|off

http {
#导入支持的文件类型
    include       mime.types;
#超出mime.types 文件设置后,设置默认的类型,会提示下载不匹配的类型文件
    default_type  application/octet-stream;

#可以设置多个log配置
    #log_format  main  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
    #                  ‘$status $body_bytes_sent "$http_referer" ‘
    #                  ‘"$http_user_agent" "$http_x_forwarded_for"‘;

    log_format  app  ‘$remote_addr - $remote_user [$time_local] "$request" ‘
                      ‘$status $body_bytes_sent "$http_referer" ‘
                      ‘"$http_user_agent" "$http_x_forwarded_for"‘;
#调用log配置
    #access_log  logs/access.log  app;

#实现文件零拷贝,静态文件用
    sendfile        on;
#在开启了sendfile的情况下,合并请求后统一发送给客户端,节省网络带宽,会产生延迟。
    #tcp_nopush     on;
#在开启了keepalived模式下的连接是否启用TCP_NODELAY选项,当为off时,延迟0.2s发送,默认on时,不延迟发送,立即发送用户响应报文,建议off
    #tcp_nodelay    off;
#回话保持时间,第二个参数使客户端访问时可以看到设置的超时时间
    #keepalive_timeout  0;
    keepalive_timeout  65 65;
#开始文件压缩,降低消耗
    #gzip  on;

    server {
        listen       80;
#正则表达式匹配访问域名,如果没有匹配到全部使用www.admin.com 返回
        server_name  localhost www.(abc\d+)\.admin.com$ www.admin.com;
#设置编码格式
        #charset utf-8;

        #access_log  logs/host.access.log  main;

        location / {
            root   html;
            index  index.html index.htm;
        }

        #error_page  404              /404.html;

        # redirect server error pages to the static page /50x.html
        #
#设置报错访问页面,可以加入404 403 等等
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

        error_page   404 403  /40x.html;
        location = /40x.html {
            root html;
        }
        # proxy the PHP scripts to Apache listening on 127.0.0.1:80
        #
        #location ~ \.php$ {
        #    proxy_pass   http://127.0.0.1;
        #}

        # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
        #
        #location ~ \.php$ {
        #    root           html;
        #    fastcgi_pass   127.0.0.1:9000;
        #    fastcgi_index  index.php;
        #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
        #    include        fastcgi_params;
        #}

        # deny access to .htaccess files, if Apache‘s document root
        # concurs with nginx‘s one
        #
#限制访问 
        location ~ /passwd.html {
            deny  all;
        }
        #location ~ /\.ht {
        #   deny all;
        #}
    }
root:指定web的家?录,在定义location的时候,?件的绝对路径等于 root+location
alias:定义路径别名,会把访问的路径重新定义到其指定的路径

**语法规则: location [=|~|~*|^~] /uri/ { … }**
=     #?于标准uri前,需要请求字串与uri精确匹配,如果匹配成功就停?向下匹配并?即处理请求。 
~     #?于标准uri前,表?包含正则表达式并且区分??写,并且匹配 
!~     #?于标准uri前,表?包含正则表达式并且区分??写,并且不匹配 
~*     #?于标准uri前,表?包含正则表达式并且不区分?写,并且匹配 
!~* #?于标准uri前,表?包含正则表达式并且不区分??写,并且不匹配 
^~     #?于标准uri前,表?包含正则表达式并且匹配以什么开头 
$     #?于标准uri前,表?包含正则表达式并且匹配以什么结尾 
\     #?于标准uri前,表?包含正则表达式并且转义字符。可以转. * ?等 
*   #?于标准uri前,表?包含正则表达式并且代表任意?度的任意字符

**Nginx四层访问控制**
location /about {
    alias /data/nginx/html/pc;
    index index.html;
    deny 192.168.1.1;
    allow 192.168.1.0/24;
    allow 10.1.1.0/16;
#IPV6
    allow 2001:0db8::/32;
    deny all;
}

**Nginx账户认证功能**
centos:
yum install httpd-tools -y
ubuntu:
apt install apache2-utils
创建认证用户文件和用户
htpasswd -cbm /usr/local/nginx/conf/.htpasswd user1 123456
Adding password for user user1
htpasswd -bm /usr/local/nginx/conf/.htpasswd user2 123456
Adding password for user user2

/usr/local/nginx/conf/pc.conf
locathon = /login/ {
    root /usr/local/nginx/html/pc;
    index index.html;
    auth_basic    "login password";
    auth_basic_user_file /usr/local/nginx/conf/.htpasswd;
}

**自定义错误页面**
listen 80;
server_name www.admin.net;
error_page 500 502 503 504 404 /error.html;
location = /error.html {
    root html;
}

**自定义访问日志**
listen 80;
server_name www.admin.net;
error_page 500 502 503 504 404 /error.html;
access_log /usr/local/nginx/logs/www-admin-net_access.log;
error_log /usr/local/nginx/logs/www-admin-net_error.log;
location = /error.html {
    root html;
}

**监测访问文件是否存在**
location /about {
    root /usr/local/nginx/html/pc;
    #alias /usr/local/nginx/html/pc;
    index index.html;
    #try_files $uri /about/defaut.html;
    #try_files $uri $uri/index.html $uri.html /about/default.html;
    try_files $uri $uri/index.html $uri.html = 489;
}

**长连接配置**
#设置在一个长连接上可以服务的最大请求数目。当达到最大请求数目并结束服务后,连接被关闭。
keepalive_requests 3;
#开启长连接后,返回客户端的回话保持时间为65秒,单次长连接累计请求书达到指定次数请求或65秒回被断开
#后面的65位客户端应答报文中显示的超时时间(可以不设置第二个参数)
keepalive_timeout 65 65;

**作为下载服务器配置**
location /download {
    #自动索引功能
    autoindex on;
    #计算文件确切大小(单位bytes),off只显示大概大小(单位kb、mb、gb)
    autoindex_exact_size on;
    #显示本机时间而非GMT时间
    autoindex_localtime on;
    root /data/nginx/html/pc;
    #限制响应给客户端的传输速率,单位是bytes/second,默认0标识不限速
    limit_rate 10k;
}

**作为上传服务器**
#设置允许客户端上传单个文件的最大值,默认值为1M;
client_max_body_size 1m;
#用于接收每个客户端请求报文的body不分缓冲区大小,默认16k;超过此大小将被暂存到磁盘上的由client_body_temp_path指令所定义的位置
client_body_buffer_size size;
#设定存储客户端请求报文的body部分的临时存储路径及子目录结构和数量,目录名为16进制数字,使用hash之后往前截取1位,2位,2位作为文件名;
client_body_temp_path path [level1 [level2 [level3]]]

md5sum /data/nginx/html/pc/index.html 
95f6f65f498c74938064851b1bb 96 3d 4 /data/nginx/html/pc/index.html 
1级?录占1位16进制,即2^4=16个?录 0-f 
2级?录占2位16进制,即2^8=256个?录 00-ff 
3级?录占2位16进制,即2^8=256个?录 00-ff 
配置?例:
client_max_body_size 10m; 
client_body_buffer_size 16k; 
#reload Nginx会?动创建temp?录
client_body_temp_path /apps/nginx/temp 1 2 2; 

 

nginx编译、优化、配置

原文:https://www.cnblogs.com/sqbk/p/14136023.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!