nginx conf配置篇,如何配置.conf文件

avatar
作者
猴君
阅读量:0

Nginx的主配置文件是nginx.conf,这个配置文件一共由三部分组成,分别为全局块、events块和http块。
在http块中,又包含http全局块、多个server块。每个server块中,可以包含server全局块和多个location块。在同一配置块中嵌套的配置块,各个之间不存在次序关系。

一、默认配置文件

 #user  nobody; worker_processes  1;  #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; }   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;     #tcp_nopush     on;      #keepalive_timeout  0;     keepalive_timeout  65;      #gzip  on;      server {         listen       80;         server_name  localhost;          #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;         }          # 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 ~ /\.ht {         #    deny  all;         #}     }       # 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;     #    }     #}       # HTTPS server     #     #server {     #    listen       443 ssl;     #    server_name  localhost;      #    ssl_certificate      cert.pem;     #    ssl_certificate_key  cert.key;      #    ssl_session_cache    shared:SSL:1m;     #    ssl_session_timeout  5m;      #    ssl_ciphers  HIGH:!aNULL:!MD5;     #    ssl_prefer_server_ciphers  on;      #    location / {     #        root   html;     #        index  index.html index.htm;     #    }     #}  } 

二、结构说明

...              #全局块  events {         #events块    ... }  http      #http块 {     ...   #http全局块     server        #server块     {          ...       #server全局块         location [PATTERN]   #location块         {             ...         }         location [PATTERN]          {             ...         }     }     server     {       ...     }     ...     #http全局块 } 

1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。

2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。

3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。

4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。

5、location块:配置请求的路由,以及各种页面的处理情况。

三、配置说明

########### 每个指令必须有分号结束。################# #配置用户或者组,默认为nobody nobody,以什么用户启动 nginx程序,涉及到文件的读写权限,一般应该用root。 user root;    #允许生成的进程数,默认为1。标配一个cpu起一个进程。 worker_processes auto;    #指定nginx进程运行文件存放地址 pid /nginx/pid/nginx.pid;     #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg #error_log log/error.log debug;    events { 	#设置网路连接序列化,防止惊群现象发生,默认为on     #accept_mutex on;             #设置一个进程是否同时接受多个网络连接,默认为off     #multi_accept on;           #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport     #use epoll;               #最大连接数,可以根据实际情况扩大,生产可扩大到10240     worker_connections  10240;     }   http { 	#文件扩展名与文件类型映射表     include       mime.types;             #默认文件类型,默认为text/plain     default_type  application/octet-stream;           #取消服务日志     #access_log off;           #自定义格式         #log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';           #combined为日志格式的默认值     #access_log log/access.log myFormat;    	#允许sendfile方式传输文件,默认为off,可以在http块,server块,location块。     sendfile on;           #每个进程每次调用传输数量不能大于设定的值,默认为0,即不设上限。     sendfile_max_chunk 100k;            #连接超时时间,默认为75s,可以在http,server,location块。     keepalive_timeout 75;            #接收客户端请求体超时     client_body_timeout 20s;          #客户端连接nginx超时, 建议5s内,接收客户端header超时时间,超时返回408     client_header_timeout 10s;  	#限制请求体的大小,若超过所设定的大小,返回413错误。     client_max_body_size 10M;   	#Nginx分配给请求数据的Buffer大小,如果请求的数据小于client_body_buffer_size直接将数据先在内存中存储。 	#大于该值小于client_max_body_size,就会将数据先存储到临时文件(用户组要有读写权限)中,client_body_temp 指定的路径中,默认该路径值是/tmp/。     client_body_buffer_size 128k;          #开启自定义错误重定向,不存在会返回404页面     fastcgi_intercept_errors on;  	#热备     upstream mysvr {          server 127.0.0.1:7878;       server 192.168.10.121:3333 backup;       }      server {     	#单连接请求上限次数。         keepalive_requests 120;          #监听端口         listen       4545;            #监听地址          server_name  127.0.0.1;             #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。              location  ~*^.+$ {            	#根目录,设置目录            #root path;              #设置默认页            #index index.htm;              #请求转向mysvr 定义的服务器列表            proxy_pass  http://mysvr;               #拒绝的ip            #deny 127.0.0.1;              #允许的ip            #allow 172.18.5.54;                    }      } } 

四、常用案例

案例1:页面转发,80端口指向index,前后台可用

 server {         listen       80;         server_name  localhost;         location / {             root   /home/user01/dist/;             try_files $uri $uri/ /index.html;             index  index.html index.htm;         } 

案例2:接口转发。80/api指向后台服务端口

server { 		location /api/{             proxy_set_header Host $http_host;             proxy_set_header X-Real-IP $remote_addr;             proxy_set_header REMOTE-HOST $remote_addr;             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;             proxy_pass http://localhost:48080/;           } } 

案例3:文件路径转发。80/uploadFile指向文件路径

server {   		location /uploadFile/{             proxy_pass http://localhost:48081/;         }   }     server {           listen         48081;                 server_name  localhost;            charset utf-8;          root    /home/user01/java/file;          location / {             autoindex on;                          autoindex_exact_size off;              autoindex_localtime on;           }     } 

简略配置:

location /uploadFile{  		root    /home/user01/java/file;  } 

案例4::端口转发,将本地端口指向其他地址

server { 	listen 127.0.0.1:8279; 	location / {  		proxy_pass http://ip:8279; 	} } 

案例5:负载均衡,将一个端口指向多个服务

server { 		listen 8888; 		location / {  			#通过代理将请求发送给 upstream 命名的HTTP 服务 			proxy_pass http://myserver; 		} 	} 	 #定义一个 HTTP 服务组 upstream  myserver{ 		#用server定义HTTP 地址。后面不写默认轮询。 		server 127.0.0.1:8080 max_fails=5 fail_timeout=10s weight=10; 		server 127.0.0.1:8081 backup; 		server 127.0.0.1:8082 down; 	} 
upstream  myserver{ 	#相同的客户端ip请求相同的服务器。 	server 127.0.0.1:8080; 	server 127.0.0.1:8081; 	ip_hash; } 
  • weight,加权轮询。
  • down,表示当前的server暂时不参与负载均衡。
  • backup,预留的备份机器。当其他所有的非backup机器出现故障或者忙的时候,才会请求backup机器,因此这台机器的压力最轻。
  • max_fails,允许请求失败的次数,默认为1。当超过最大次数时,返回proxy_next_upstream 模块定义的错误。
  • fail_timeout,在经历了max_fails次失败后,暂停服务的时间。max_fails可以和fail_timeout一起使用。

五、配置文件新增端口转发配置技巧

1、在nginx.conf中http加入一行include tcpconf/*.conf;

http { include tcpconf/*.conf; } 

2、在nginx.conf目录下,新建文件夹tcpconf,其他配置文件命名.conf,文件中写入转发的配置。例如下面,然后重启生效。

server {     listen 127.0.0.1:8279;    location / {     proxy_pass http://ip:8279; 	} } 

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!