nginx 配置文件详解

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 配置文件详解相关的知识,希望对你有一定的参考价值。

  1 #指定nginx运行的用户及用户组,默认为nobody
  2  #user  nobody;   
  3   
  4   #开启的线程数,一般跟逻辑CPU核数一致
  5  worker_processes  1;   
  6 
  7   #定位全局错误日志文件,级别以notice显示,还有debug,info,warn,error,crit模式,debug输出最多,crir输出最少,根据实际环境而定
  8   #error_log  logs/error.log;
  9   #error_log  logs/error.log  notice;
 10   #error_log  logs/error.log  info;
 11   
 12   #指定进程id的存储文件位置
 13   #pid        logs/nginx.pid;
 14   
 15   #指定一个nginx进程打开的最多文件描述符数目,受系统进程的最大打开文件数量限制
 16   #worker_rlimit_nofile 65535
 17   
 18   events {
 19       #设置工作模式为epoll,除此之外还有select,poll,kqueue,rtsig和/dev/poll模式
 20       #use epoll;
 21       
 22       #定义每个进程的最大连接数,受系统进程的最大打开文件数量限制。
 23       worker_connections  1024;
 24   }
 25   
 26   #######Nginx的Http服务器配置,Gzip配置
 27   http {
 28       #主模块指令,实现对配置文件所包含的文件的设定,可以减少主配置文件的复杂度,DNS主配置文件中的zonerfc1912,acl基本上都是用include语句。
 29       include       mime.types;
 30       
 31       #核心模块指令,智力默认设置为二进制流,也就是当文件类型未定义时使用这种方式
 32       default_type  application/octet-stream;
 33   
 34       #下面代码为日志格式的设定,main为日志格式的名称,可自行设置,后面引用
 35       #log_format  main  $remote_addr - $remote_user [$time_local] "$request" 
 36       #                  $status $body_bytes_sent "$http_referer" 
 37       #                  "$http_user_agent" "$http_x_forwarded_for";
 38   
 39       #引用日志main
 40       #access_log  logs/access.log  main;
 41   
 42       #设置允许客户端请求的最大的单个文件字节数
 43       #client_max_body_size 20M;
 44       #指定来自客户端请求头的headebuffer大小
 45       #client_header_buffer_size  32k;
 46       #指定连接请求试图写入缓存文件的目录路径
 47       #client_body_temp_path /dev/shm/client_body_temp;
 48       #指定客户端请求中较大的消息头的缓存最大数量和大小,目前设置为4个32KB
 49       #large client_header_buffers 4 32k;
 50       
 51       #开启高效文件传输模式
 52       sendfile        on;
 53       #开启防止网络阻塞
 54       #tcp_nopush     on;
 55       #开启防止网络阻塞
 56       #tcp_nodelay    on;
 57       
 58       #设置客户端连接保存活动的超时时间
 59       #keepalive_timeout  0;
 60       keepalive_timeout  65;
 61   
 62       #设置客户端请求读取超时时间
 63      #client_header_timeout 10;
 64       #设置客户端请求主体读取超时时间
 65       #client_body_timeout 10;
 66       #用于设置相应客户端的超时时间
 67       #send_timeout 
 68       
 69       ####HttpGZip模块配置
 70       #httpGzip modules
 71       #开启gzip压缩
 72       #gzip  on;
 73       #设置允许压缩的页面最小字节数
 74       #gzip_min_length 1k;
 75       #申请4个单位为16K的内存作为压缩结果流缓存
 76       #gzip_buffers 4 16k;
 77       #设置识别http协议的版本,默认为1.1
 78       #gzip_http_version 1.1;
 79      #指定gzip压缩比,1-9数字越小,压缩比越小,速度越快
 80       #gzip_comp_level 2;
 81       #指定压缩的类型
 82       #gzip_types text/plain application/x-javascript text/css application/xml;
 83       #让前端的缓存服务器进过gzip压缩的页面
 84       #gzip_vary on;  
 85       
 86      #########Nginx的server虚拟主机配置
 87       server {
 88           #监听端口为 80
 89           listen       80;
 90           
 91           #设置主机域名
 92           server_name  localhost;   //www.xxx.com或者ip
 93           
 94           #设置访问的语言编码
 95          #charset koi8-r;
 96  
 97          #设置虚拟主机访问日志的存放路径及日志的格式为main
 98          #access_log  logs/host.access.log  main;
 99 
100          #设置虚拟主机的基本信息
101          location / {
102              #设置虚拟主机的网站根目录
103              root   html;
104              
105              #设置虚拟主机默认访问的网页
106              index  index.html index.htm;
107          }
108  
109          #error_page  404              /404.html;
110  
111          # redirect server error pages to the static page /50x.html
112          #
113          error_page   500 502 503 504  /50x.html;
114          location = /50x.html {
115              root   html;
116          }
117  
118          # proxy the php scripts to Apache listening on 127.0.0.1:80
119          #
120          #location ~ \.php$ {
121          #    proxy_pass   http://127.0.0.1;
122          #}
123  
124          # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
125          #
126          #location ~ \.php$ {
127          #    root           html;
128          #    fastcgi_pass   127.0.0.1:9000;
129          #    fastcgi_index  index.php;
130          #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
131          #    include        fastcgi_params;
132          #}
133 
134          # deny access to .htaccess files, if Apaches document root
135         # concurs with nginxs one
136          #
137          #location ~ /\.ht {
138          #    deny  all;
139         #}
140      }
141  
142  
143      # another virtual host using mix of IP-, name-, and port-based configuration
144      #
145      #server {
146      #    listen       8000;
147      #    listen       somename:8080;
148      #    server_name  somename  alias  another.alias;
149  
150      #    location / {
151      #        root   html;
152      #        index  index.html index.htm;
153      #    }
154      #}
155  
156  
157      # HTTPS server
158      #
159      #server {
160      #    listen       443 ssl;
161      #    server_name  localhost;
162  
163      #    ssl_certificate      cert.pem;
164      #    ssl_certificate_key  cert.key;
165  
166      #    ssl_session_cache    shared:SSL:1m;
167      #    ssl_session_timeout  5m;
168  
169      #    ssl_ciphers  HIGH:!aNULL:!MD5;
170      #    ssl_prefer_server_ciphers  on;
171  
172      #    location / {
173      #        root   html;
174      #        index  index.html index.htm;
175      #    }
176      #}
177
178  }
179 
180 

静态文件:

在使用nginx+Tomcat 我tomcat为8080端口,使用nginx进行跳转发现网站页面出来了却没显示图片.为此一顿研究;

发现是uri的问题:一定要注意!!!

location通过正则表达式来配置可以访问静态资源,通过正则表达式配置location,里面的proxy_pass一定不能有uri,

即配置成:proxy_pass http://192.168.9.12:8081/;

或者

proxy_pass http://192.168.9.12:8081/yiliao_doc;

都是错的~

下面贴出我参考的小示例子

网址来源:http://blog.csdn.net/cxm19881208/article/details/65441865

server {

        listen       443;

        server_name  doc.wlyl.com;

        location /yiliao_doc/ {

                proxy_pass http://192.168.9.12:8081;

                proxy_redirect off ;

                proxy_set_header Host $host;

                proxy_set_header  X-Real-IP  $remote_addr;

                proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;

                proxy_set_header X-Forwarded-Proto  $scheme;

                proxy_next_upstream error timeout invalid_header;

        }

        location ~ .*\.(html|htm|ico|png|jpg|jpeg|js|css|bmp)$ {

            proxy_pass http://192.168.9.12:8081;

       }


    }

 

下面是我nginx+tomcat中配置静态文件重启时出现的问题:

nginx: [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
[[email protected] sbin]# /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf   //这里就是指定nginx.conf能生成对应在logs下生成对应的.pid文件
[[email protected] sbin]# ./nginx -s reload  //重新载入配置文件nginx.conf  然后就出来了

 

下面是我的配置静态文件

location / {
            root   /home/apache-tomcat-8.5.23/webapps/wzpbk/;
            index  index.html index.htm index.jsp;                    
            proxy_redirect off;
            proxy_pass http://www.wzpbk.com:8080/wzpbk/;  //这里就是由监听到了80端口来跳转到我设置的位置8080和项目路径
            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 ~ ^/(images|javascript|js|css|flash|media|static)/ {
        alias /home/apache-tomcat-8.5.23/webapps/wzpbk;
        expires 30d;
        }
        
        location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|apk|tar.gz)$ {
        proxy_pass http://ip:8080;
            expires      30d;
        }
        
        location ~ .*\.(js|css)?$ {
        proxy_pass http://ip:8080;
            expires      12h;
         }

 

先写到这里下班了

 

 

以上是关于nginx 配置文件详解的主要内容,如果未能解决你的问题,请参考以下文章

Nginx配置文件详细介绍

./configure --prefix=nginx-root 这句代码是啥意思 求详解

nginx 配置详解是啥?

nginx配置文件详解

Nginx配置文件详解

nginx配置文件详解