当前位置:  操作系统/服务器>linux
本页文章导读:
    ▪如何打开Nginx的目录浏览功能(autoindex)      Nginx默认不允许列出整个目录,本文为大家介绍打开其目录浏览功能的方法,供大家参考。 首先,打开nginx.conf文件,在location server 或 http段中加入: autoindex on; 另外两个参数最好也加上: .........
    ▪Nginx做前端代理和缓存的配置文件      Nginx做前端代理及缓存的配置文件,很好的一篇文章,供大家学习参考。 代码如下: ###用户和用户组 user hr hr; ###启动时调8个进程 worker_processes 8; ###分发8个进程到不同的cpu worker_cpu_affinity 0.........
    ▪nginx反向代理与缓存详解          nginx反向代理与缓存详解,配有详细的中文解释,适合初学者参考。     nginx 从0.7.48 版本后开始,支持类似squid的缓存功能。该缓存是把URL及相关组合当作key,然后用md5编码哈希后保存.........

[1]如何打开Nginx的目录浏览功能(autoindex)
    来源: 互联网  发布时间: 2013-12-24

Nginx默认不允许列出整个目录,本文为大家介绍打开其目录浏览功能的方法,供大家参考。

首先,打开nginx.conf文件,在location server 或 http段中加入:
autoindex on;

另外两个参数最好也加上:
autoindex_exact_size off;
默认为on,显示出文件的确切大小,单位是bytes。
改为off后,显示出文件的大概大小,单位是kB或者MB或者GB

autoindex_localtime on;
默认为off,显示的文件时间为GMT时间。
改为on后,显示的文件时间为文件的服务器时间

配置示例:

代码如下:
location /images {
    root   /var/www/nginx-default/ibugaocn;
    autoindex on;
}

详细参照:http://wiki.nginx.org/NginxChsHttpAutoindexModule

如果想希望目录列表支持header,footer则可以安装三方插件:
http://wiki.nginx.org/NginxNgxFancyIndex


    
[2]Nginx做前端代理和缓存的配置文件
    来源: 互联网  发布时间: 2013-12-24

Nginx做前端代理及缓存的配置文件,很好的一篇文章,供大家学习参考。

代码如下:
###用户和用户组
user hr hr;

###启动时调8个进程
worker_processes 8;

###分发8个进程到不同的cpu
worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000;

###错误日志及级别
error_log logs/error.log crit;

###每个工作进程可以读取的最大文件数(ulimit -n)
worker_rlimit_nofile 40960;

###pid文件
pid logs/nginx.pid;
events
{
###使用epoll协议
use epoll;

###每个进程支持的最大连接数
worker_connections 40960;
}
http
{
include mime.types;
default_type application/octet-stream;

access_log logs/access.log main;
###超时时间(客户端要是有下载或者上传的话,最好调大些)
keepalive_timeout 120;

###根据server名字的记录其hash值,记录空间的大小
server_names_hash_bucket_size 128;

###头部缓冲区的大小为4k,超过4k将会放到large_client_header_buffers
client_header_buffer_size 4k;

###大请求的head缓冲区得个数和大小
large_client_header_buffers 4 8k;

###许客户端连接的最大请求实体大小为8M
client_max_body_size 8m;

###支持上传
sendfile on;
tcp_nodelay on;

###使得tomcat返回的404经过nginx处理
proxy_intercept_errors on;

###cache的大小,20秒检测一次
open_file_cache max=40960 inactive=20s;

###同一文件cache有效期为30秒
open_file_cache_valid 30s;

###如果在20秒内某个文件一次都没有被访问,踢出cache
open_file_cache_min_uses 1;

###实体请求的大小限制
client_body_buffer_size 512k;

###连接超时
proxy_connect_timeout 5;

###读等待超时
proxy_read_timeout 60;

###接收超时
proxy_send_timeout 5;

###从后端tomcat读取到的请求头
proxy_buffer_size 16k;

###用于与后台tomcat交互的区域大小
proxy_buffers 4 64k;

###busy时的缓冲区大小,一般都是buffers的两倍
proxy_busy_buffers_size 128k;

###对后端tomcat写操作的缓冲
proxy_temp_file_write_size 128k;

###一个临时目录,两个对应server的缓存
proxy_temp_path /home/nginx1.0/proxy_temp;

####已经被缓存的,6小时没用过,干掉
proxy_cache_path /home/nginx1.0/proxy_cache1 levels=1:2 keys_zone=proxycache1:200m inactive=6h max_size=10g;
proxy_cache_path /home/nginx1.0/proxy_cache2 levels=1:2 keys_zone=proxycache2:200m inactive=6h max_size=10g;

###后端的服务器列表
upstream cache1
{
server jiaofu-01:8083 srun_id=jvm1;
server jiaofu-02:8083 srun_id=jvm2;

###开启session记录(jvm1、jvm2是要和tomcat上完全一致的)
jvm_route $cookie_JSESSIONID reverse;
}
upstream cache2
{
server jiaofu-01:8084 srun_id=jvm1;
server jiaofu-02:8084 srun_id=jvm2;
jvm_route $cookie_JSESSIONID reverse;
}

server
###cache1
{
listen 80;
server_name jiaofu.com;
root /home//webapps/cache1;

###不显示nginx版本号
server_tokens off;

###不显示server是nginx

more_set_headers 'Server: Apache';
error_page 400 403 404 500 501 502 503 504 505 http://www./error.html;

###禁止访问这些结尾的
location ~* \.(sql|bak|inc|old)$
{
return 403;
}

###不走tomcat
location /js/*.js
{
allow all;
}
location /css/*.css
{
allow all;
}
location /images
{
allow all;
}

###nginx状态页
location /NginxStatus
{
stub_status on;
access_log on;
auth_basic "NginxStatus";
allow 127.0.0.1;
deny all;
}

###访问出了上面定义的不走tomcat的请求之外的,走cache1
location /
{
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
proxy_pass http://cache1;
}

###只缓存
location ~ .*\.(html|js|css|jpg|gif|swf|png)$
{

#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache proxycache1;

#对不同的HTTP状态码设置不同的缓存时间(服务器缓存时间)
proxy_cache_valid 200 304 1h;

proxy_cache_valid any 1m;

#以域名、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_pass http://cache1;

#######客户端缓存时间
expires 10m;
}

###日志格式
log_format nginx-tomcat-social '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
}

server
###cache2
{
listen 8889;
server_name jiaofu-02.com:8999;
root /home/webapps/cache2;
server_tokens off;
error_page 400 403 404 500 501 502 503 504 505 http:///error.html;
location ~* \.(sql|bak|inc|old)$
{
return 403;
}
location /js/*.js
{
allow all;
}
location /css/*.css
{
allow all;
}
location /images
{
allow all;
}
location /jobPages/*.html
{
allow all;
}

location /NginxStatus
{
stub_status on;
access_log on;
auth_basic "NginxStatus";
allow 127.0.0.1;
deny all;
}

location /
{
proxy_set_header Host $host;
proxy_set_header X-Forwarder-For $remote_addr;
proxy_pass http://school;
}

location ~ .*\.(html|js|css|jpg|gif|swf|png)$
{
#如果后端的服务器返回502、504、执行超时等错误,自动将请求转发到upstream负载均衡池中的另一台服务器
proxy_next_upstream http_502 http_504 error timeout invalid_header;
proxy_cache proxycache2;

#对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 200 304 6h;

#以域名、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_pass http://cache2;
expires 1d;
}
log_format nginx-tomcat-school '$remote_addr - $remote_user [$time_local] $request '
'"$status" $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
}
}


    
[3]nginx反向代理与缓存详解
    来源: 互联网  发布时间: 2013-12-24

    nginx反向代理与缓存详解,配有详细的中文解释,适合初学者参考。

    nginx 从0.7.48 版本后开始,支持类似squid的缓存功能。该缓存是把URL及相关组合当作key,然后用md5编码哈希后保存在硬盘上,因此nginx 支持任意的URl连接,同时也支持404/301/302 这样非200 状态码。虽然目前官方nginx web 缓存服务器只能为指定的URL或者状态码设置过期时间,但是不支持类似squid的purge 指令,需要手动清除缓存页面,但是,通过第三方的nginx模块,可以清楚指定URL的缓存,当然nginx的web缓存服务主要是由proxy_cache相关指令集和fastcgi_cache相关指令集构成,而proxy_cache 主要是用于反向代理,又来缓存后端服务器的内容源而Fastcgi_cache 主要缓存的是动态程序。

   下载相关的软件包
    prce-8.00.tar.gz    ngx_cache_purge-1.2.tar.gz   nginx-0.8.53.tar.gz

安装相关的软件包 

代码如下:
#tar  xvf  prce-8.00.tar.gz
#cd  prce-8.00
#./configure
#make && make install
#useradd -s /sbin/nologin  www
#cd ../
#tar –xvf ngx_cache_purge-1.2.tar.gz
#tar  nginx-0.8.53.tar.gz
#cd nginx-0.8.53
#./configure  --user=www –group=www –add-module=../ngx_cache_purge-1.2 –prefix=/usr/local/nginx  --with-http_stub_status_module   --with-http_ssl_module
#make && make install

修改并配置nginx 

代码如下:

#cd /usr/local/nginx/conf
#vim nginx.conf
#nginx 运行的用户 user  nobody;

#开启的进程数
worker_processes  1;

#定义错误日志的路径及其日志级别
error_log /usr/local/nginx/logs/error.log crit;

#nginx 的进程
pid logs/nginx.pid;
#specifiles the value for maximum file descriptors that can be opened by this process

#文件句柄数,和系统单进程打开的文件数相同,不必理会进程个数
worker_rlimit_nofile  65535;
events {
    use epoll;

    worker_connections  1024; #定义的是单个进程的连接数,该值受系统进程打开文件数限制,需要修改打开的文件句柄数,但是max_client = worker_proxesses X work_connextions,
}

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" '
                      '"request_method $scheme://$host$request_uri $server_protocol" $status $body_bytes_sent'
                      '"$http_user_agent" "$http_x_forwarded_for"';

# 指定服务器名称哈希的大小,hash bucket size 等于一路处理器缓存大小,与server_names_hash_max_size 共同控制保存服务器名的HASH表
server_names_hash_bucket_size 128;

# 以下两项是设定客户端请求Header头缓存去的大小,4 为个数。128k 为大小。申请4个128k。当http 的uri太长或者request header 过大时会报414  Request URI too large 或者400 bad request

client_header_buffer_size 32k;
large_client_header_buffers 4 128k;

#HTTP请求的BODY 最大限制,若超出此值,报413 Request Entity Too Lager
client_max_body_size 8m; 

#缓冲去代理用户请求的最大字节数,可以理解为先保存本地,然后在传给用户
client_body_buffer_size 32k;

#不允许客户端主动关闭连接,如果该项为设置在nginx的日志中可能出现499 错误
proxy_ignore_client_abort on;

#nginx 和后端服务器连接超时时间 发起握手等候响应时间
proxy_connect_timeout 5;

#连接成功后等候后端服务器响应时间,其实已经进入后端的排队等候处理
proxy_read_timeout 60;

#后端服务器数据回传时间,就是在规定的时间内后端服务器必须传完所有的数据
proxy_send_timeout 5; 

#代理请求缓存去,该缓存去间保存用户的头信息,以供nginx进行规则处理一般只要保能保存下头信息即可
proxy_buffer_size 32k;

#告诉nginx保存单个用的几个buffer 最大用多少空间
proxy_buffers  4 64k;

#高负载下缓冲大小(proxy_buffers*2)
proxy_busy_buffers_size 128k;,

#设置缓存文件夹大小,如果大于该值,将从upstream 服务器传递请求,而不缓冲到磁盘上
proxy_temp_file_write_size 1024m;

#这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
open_file_cache max=102400 inactive=20s;

#这个是指多长时间检查一次缓存的有效信息。
open_file_cache_valid 30s;

#open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
open_file_cache_min_uses 1;    

#shutdown error display nginx version

# 关闭错误时的nginx 的版本显示
server_tokens off;                                                   

#open os function sendfile

# 打开高效的文件传输模式
sendfile        on;
#tcp_nopush     on;
tcp_nopush     on; # 打开linux TCP_CORK,只有sendfile 打开时,该项才有效,用来发送系统HTTP response headers 设置选项的目的是告诉TCP协议不要仅仅为清空发送的缓存而发送报文段。通常三个设置TCPNOPUSH 插口选项。当请求长度超过报文段最大长度时,协议就好可能发出满长度的报文段,这样可以减少报文段的数量,减少的程度取决于每次发送的数量

keepalive_timeout  60;
tcp_nodelay on; #打开TCP_NODELAY 在包含了keepalived 才有效,上面的四项有效的提高了文件传输性能,用sendfile() 函数来转移大量的数据,协议会需要预先解决数据包包头部分,正常情况下包头很小,而且套接字上设置了TCP_NODELAY 。有包头的包将被立即传输,在一些情况下,因为包成功的被对方收到后需要请求对方确认,这样,大量的数据传输就会被延迟而且产生大量不必要的网络流量交换,但是在socket上是指了TCP_CORK ,就像个管道塞住塞子把带有包头的包填满数据,所有的数据根据大小进行填充,自动通过数据包发送出去,但是在数据传送完成是,需要把塞子打开   

#开启gzip 的设置
#gzip  on;
gzip  on;

#设置允许压缩的页面的最小字节数,页面字节数从Header 头中的Content-Length中获取建议设置成大于1k的字节数,小于1k可能越压越大
gzip_min_length 1k;

#设置以16k为单位4倍申请内存做压缩结果缓存,默认值是申请跟原始数据相同大小的内存空间存储gzip压缩结果
gzip_buffers 4 16k;

#默认1.1 ,大部分浏览器支持gzip 压缩
gzip_http_version 1.1;

#设置压缩级别 压缩比率1-9,压缩比率越大,越消耗系统资源
gzip_comp_level 2;

#设置压缩列席
gzip_types   text/plain application/x-javascript text/css application/xml;

#设置前端的缓存服务,如squid缓存经过nginx压缩的数据,该选项在做反向代理是设定压缩,后面参数为验证的header头信息,在做相应的压缩处理,
gzip_vary on;  

#proxy_cache  
# 该处设置的是缓存的目录及其设置的大小
proxy_cache_path  /usr/local/nginx/proxy_temp levels=1:2 keys_zone=cache_one:200m inactive=1d max_size=30g;

#设置负载池
upstream backend_server {
server 192.168.2.194:80 ;
 # 注weight设置的权重  max_fails 设置的是健康监测失败次数,timeout 设置超时时间 当然此处主要是设置nginx的反向代理及其缓存

# server 192.168.2.107:80 weight=1 max_fails=2 fail_timeout=30s;
}   

server {
    #注:监听的端口号
        listen       80;
        #server_name  localhost;
         #设置监听的主机名
          server_name freehat.blog.51cto.com;
           if ($host !~ 'freehat.blog.51cto.com') {
             return 403;
          }
        #charset koi8-r;
        #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
        #
     error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }     
        #设置扩展名以gif  .jpg .css 等结尾的静态文件缓存
       location ~.*\.(gif|jpg|jpeg|png|bmp|sqf|js|css)$
         {  
           #设置防盗链
           valid_referers none blocked freehat.blog.51cto.com;
           if ($invalid_referer) {
            return 404
             #如果后端的服务器返回502 504 执行超时等错误,自动将请求转发到upstream 负责均衡池中的另外一台服务器,实现故障转移
             proxy_next_upstream http_502 http_504 error timeout invalid_header;
             #进行缓存,使用web缓存去cache_one
             proxy_cache cache_one;
            #以域名,URI,参数组合成web缓存的Key值,Nginx根据Key值哈希,储存缓存内容到二级缓存目录内
            #对不同的HTTP 状态码设置不同的缓存时间
             proxy_cache_valid 200 304 12h;
             proxy_cache_valid any 1m;
             proxy_set_header Host $host;
             proxy_set_header X-Real-IP $remote_addr;
             #设定proxy_set_header  Accept-Encoding 或者是后台服务器关闭gzip,该台机器才不会缓存被压缩的文件,造成乱码
             proxy_set_header Accept-Encoding "none";
            # proxy_set_header Accept-Encoding ""; 同上面一项相同
             #设置proxy_cache 支持后台设定的expires , 即使支持HTTP头信息定义的缓存规则
             proxy_ignore_headers "Cache-Control" "Expires";
             if ( !-e  $request_filename )
                {
                proxy_pass  http://backend_server;
                 }注: 该项是如果client 请求的文件在cache 中保存,nginx 直接从cache中把对应的文件返还给client ,不会在去后端的Server 去取对应的文件
             expires 1h;  设置过去的时间
             }     
#set don't  php jsp cgi in cache  设置php jsp cgi 不保存在cache中
  location ~.*\.(php|jsp|cgi)?$
   {
     proxy_set_header Host $host;
     proxy_set_header X-Forwarded-For $remote_addr;
     proxy_pass http://backend_server;
    }
#set js and css cache  expire time 设置js|css 在浏览器中过期的时间
       location ~ .*\.(js|css)
            {
                expires  1h;
             }
#clean all cache  设置清除所有的cache
 location ~/purge(/.*)
       {
       allow   127.0.0.1;
       allow  192.168.2.0/24;
       deny    all;
       proxy_cache_purge cache_one $host$1$is_args$args;
      }
    }
}

启动机及其关闭nginx的命令
1、启动之前检查nginx的主配置文件是否有错误
   # /usr/local/nginx/sbin/nginx  -t
2、启动nginx的方式
   # /usr/local/nginx/sbin/nginx  -c  /usr/local/nginx/conf/nginx.conf 
3、关闭nginx 的方式
   # /usr/local/nginx/sbin/nginx  -s  stop
4、平滑启动nginx
   #kill  -HUP  `cat /usr/local/nginx/logs/nginx.pid`

您可能感兴趣的文章:
Nginx负载均衡与反向代理的例子(图文)
Nginx Proxy 代理配置图片缓存的实例参考
nginx正向代理配置简单一例
nginx反向代理配置简单示例
学习Nginx反向代理实现简单负载均衡(图文)
nginx缓存html静态文件 解析php及反向代理IIS的配置
nginx中配置proxy正向代理
Nginx实现简单的反向代理
nginx创建反向代理和虚拟主机的例子
nginx的反向代理配置与优化
nginx反向代理与varnish缓存配置
nginx反向代理与负载均衡
Nginx 反向代理的小例子
nginx反向代理配置一例
Nginx反向代理Nginx
nginx反向代理配置和优化
Nginx Proxy代理和图片缓存配置
nginx配置反向代理的简单示例


    
最新技术文章:
▪linux系统中的列出敏感用户的脚本代码
▪a10 config backup for aXAPI
▪一键备份gitolite服务器的Shell脚本
▪nagios 分发文件实现代码
▪阿里云云服务器Linux系统更新yum源Shell脚本
▪一个监控LINUX目录和文件变化的Shell脚本分享
▪Linux下实现SSH免密码登录和实现秘钥的管理、...
▪Shell正则表达式之grep、sed、awk实操笔记
▪3个备份系统文件并邮件发送的Shell脚本分享
▪CentOS 6.3下给PHP添加mssql扩展模块教程
▪监控网站是否可以正常打开的Shell脚本分享
▪shell脚本编程之if语句学习笔记
▪shell脚本编程之循环语句学习笔记
▪shell脚本编程之case语句学习笔记
▪Shell脚本实现的阳历转农历代码分享
▪Shell脚本实现复制文件到多台服务器的代码分...
▪Shell脚本实现批量下载网络图片代码分享
▪Shell脚本实现检测文件是否被修改过代码分享
▪Shell脚本数组用法小结
▪Shell脚本批量重命名文件后缀的3种实现
▪C语言实现的ls命令源码分享
▪Linux下查找后门程序 CentOS 查后门程序的shell脚...
▪Shell 函数参数
▪linux shell 自定义函数方法(定义、返回值、变...
▪Shell实现判断进程是否存在并重新启动脚本分...
▪Shell脚本break和continue命令简明教程
▪Shell脚本函数定义和函数参数
▪让代码整洁、过程清晰的BASH Shell编程技巧
▪shell常用重定向实例讲解
▪awk中RS、ORS、FS、OFS的区别和联系小结
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3