Nginx的配置文件(nginx.conf)解析和领读官网

时间:2023-12-06 14:56:56

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  步骤一:vi nginx.conf配置文件,参考本博文的最下面总结,自行去设置

Nginx的配置文件(nginx.conf)解析和领读官网

  最后nginx.conf内容为

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  步骤二:每次修改了nginx.conf配置文件后,都要reload下。

Nginx的配置文件(nginx.conf)解析和领读官网

  index.html里写入如下内容

Nginx的配置文件(nginx.conf)解析和领读官网

步骤三:

先来配一个路由映射

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  因为,我们的nginx.conf为

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  以上, 是基于域名的虚拟主机的nginx.conf配置。

 

 当然,我们也可以基于端口的虚拟主机的nginx.conf配置

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

当然,我们也可以基于ip的虚拟主机的nginx.conf配置

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  

  当然,我们用完之后,你也可以不要了,可以删掉。

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  为什么还是一样的呢?哪里错了?

我想说的是,改ip的情况,是用service restart restart

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

 Nginx的配置文件(nginx.conf)解析和领读官网

  完全成功!

 

更多学习,深入,可以参考

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  或者,http://tengine.taobao.org/nginx_docs/cn/docs

Nginx的配置文件(nginx.conf)解析和领读官网

 Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  多去深入官方文档。其他的模块,自行去研究!

对应于nginx

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

   英文好的,看英文。不好的,看中文。

Nginx的配置文件(nginx.conf)解析和领读官网

  我们现在,来进入另一个模块,即http://tengine.taobao.org/nginx_docs/cn/docs/

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  打开nginx.cof的配置文件

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  查看nginx的访问日志,可以看出ip是192.168.17.1

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网             所以,再次修改nginx.conf配置文件

Nginx的配置文件(nginx.conf)解析和领读官网

  改成192.168.17.1

Nginx的配置文件(nginx.conf)解析和领读官网

  重新加载!

  访问,被成功禁止了

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  现在,我们进入下一个模块, ngx htp auth basic module

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  我们再修改下nginx配置文件

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  输入,刚设置的用户名和密码。

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

  说白一点,代理是对客户端的代理。反向代理是对服务器的代理。

Nginx的配置文件(nginx.conf)解析和领读官网

Nginx的配置文件(nginx.conf)解析和领读官网

总结

二.第二章:nginx的配置,虚拟主机配置规则等

1.Nginx配置文件及各个配置项含义

Nginx.conf配置文件参数说明

#定义Nginx运行的用户和用户组

user www www;

#nginx进程数,建议设置为等于CPU总核心数。

worker_processes 8;

#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]

error_log /var/log/nginx/error.log info;

#进程文件

pid /var/run/nginx.pid;

#一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n的值保持一致。

worker_rlimit_nofile 65535;

#工作模式与连接数上限

events

{

# 参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。

use epoll;

#单个进程最大连接数(最大连接数=连接数*进程数)

worker_connections 65535;

}

#设定http服务器

http

{

include mime.types; #文件扩展名与文件类型映射表

default_type application/octet-stream; #默认文件类型

#charset utf-8; #默认编码

server_names_hash_bucket_size 128; #服务器名字的hash表大小

client_header_buffer_size 32k; #上传文件大小限制

large_client_header_buffers 4 64k; #设定请求缓

client_max_body_size 8m; #设定请求缓

sendfile on; #开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为 on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改 成off。

autoindex on; #开启目录列表访问,合适下载服务器,默认关闭。

tcp_nopush on; #防止网络阻塞

tcp_nodelay on; #防止网络阻塞

keepalive_timeout 120; #长连接超时时间,单位是秒

#FastCGI相关参数是为了改善网站的性能:减少资源占用,提高访问速度。下面参数看字面意思都能理解。

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;

#gzip模块设置

gzip on; #开启gzip压缩输出

gzip_min_length 1k; #最小压缩文件大小

gzip_buffers 4 16k; #压缩缓冲区

gzip_http_version 1.0; #压缩版本(默认1.1,前端如果是squid2.5请使用1.0)

gzip_comp_level 2; #压缩等级

gzip_types text/plain application/x-javascript text/css application/xml;

#压缩类型,默认就已经包含text/html,所以下面就不用再写了,写上去也不会有问题,但是会有一个warn。

gzip_vary on;

#limit_zone crawler $binary_remote_addr 10m; #开启限制IP连接数的时候需要使用

upstream blog.ha97.com {

#upstream的负载均衡,weight是权重,可以根据机器配置定义权重。weigth参数表示权值,权值越高被分配到的几率越大。

server 192.168.80.121:80 weight=3;

server 192.168.80.122:80 weight=2;

server 192.168.80.123:80 weight=3;

}

#虚拟主机的配置

server

{

#监听端口

listen 80;

#域名可以有多个,用空格隔开

server_name www.ha97.com ha97.com;

index index.html index.htm index.php;

root /data/www/ha97;

location ~ .*.(php|php5)?$

{

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

include fastcgi.conf;

}

#图片缓存时间设置

location ~ .*.(gif|jpg|jpeg|png|bmp|swf)$

{

expires 10d;

}

#JS和CSS缓存时间设置

location ~ .*.(js|css)?$

{

expires 1h;

}

#日志格式设定

log_format access ‘$remote_addr – $remote_user [$time_local] “$request” ‘

‘$status $body_bytes_sent “$http_referer” ‘

‘”$http_user_agent” $http_x_forwarded_for’;

#定义本虚拟主机的访问日志

access_log /var/log/nginx/ha97access.log access;

#对 “/” 启用反向代理

location / {

proxy_pass http://127.0.0.1:88;

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

#后端的Web服务器可以通过X-Forwarded-For获取用户真实IP

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#以下是一些反向代理的配置,可选。

proxy_set_header Host $host;

client_max_body_size 10m; #允许客户端请求的最大单文件字节数

client_body_buffer_size 128k; #缓冲区代理缓冲用户端请求的最大字节数,

proxy_connect_timeout 90; #nginx跟后端服务器连接超时时间(代理连接超时)

proxy_send_timeout 90; #后端服务器数据回传时间(代理发送超时)

proxy_read_timeout 90; #连接成功后,后端服务器响应时间(代理接收超时)

proxy_buffer_size 4k; #设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffers 4 32k; #proxy_buffers缓冲区,网页平均在32k以下的设置

proxy_busy_buffers_size 64k; #高负荷下缓冲大小(proxy_buffers*2)

proxy_temp_file_write_size 64k;

#设定缓存文件夹大小,大于这个值,将从upstream服务器传

}

#设定查看Nginx状态的地址

location /NginxStatus {

stub_status on;

access_log on;

auth_basic “NginxStatus”;

auth_basic_user_file conf/htpasswd;

#htpasswd文件的内容可以用apache提供的htpasswd工具来产生。

}

#本地动静分离反向代理配置

#所有jsp的页面均交由tomcat或resin处理

location ~ .(jsp|jspx|do)?$ {

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_pass http://127.0.0.1:8080;

}

#所有静态文件由nginx直接读取不经过tomcat或resin

location ~ .*.(htm|html|gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$

{ expires 15d; }

location ~ .*.(js|css)?$

{ expires 1h; }

}

}

2.演示nginx作为前端服务器虚拟主机功能

演示1:通过不同servername的server模拟不同项目在同一服务器

演示2:同一server不同location匹配到不同路径不同页面

3.location配置规则

location 优先级官方文档

  1. Directives with the = prefix that match the query exactly. If found, searching stops.
  2. All remaining directives with conventional strings, longest match first. If this match used the ^~ prefix, searching stops.
  3. Regular expressions, in order of definition in the configuration file.
  4. If #3 yielded a match, that result is used. Else the match from #2 is used.
  5. =前缀的指令严格匹配这个查询。如果找到,停止搜索。
  6. 所有剩下的常规字符串,最长的匹配。如果这个匹配使用^〜前缀,搜索停止。
  7. 正则表达式,在配置文件中定义的顺序。
  8. 如果第3条规则产生匹配的话,结果被使用。否则,如同从第2条规则被使用。

Nginx location的匹配规则:

location 的执行逻辑跟 location 的编辑顺序无关。

矫正:这句话不全对,“普通 location ”的匹配规则是“最大前缀”,因此“普通 location ”的确与 location 编辑顺序无关;但是“正则 location ”的匹配规则是“顺序匹配,且只要匹配到第一个就停止后面的匹配”;“普通location ”与“正则 location ”之间的匹配顺序是?先匹配普通 location ,再“考虑”匹配正则 location 。注意这里的“考虑”是“可能”的意思,也就是说匹配完“普通 location ”后,有的时候需要继续匹配“正则 location ”,有的时候则不需要继续匹配“正则 location ”。两种情况下,不需要继续匹配正则 location :( 1 )当普通 location 前面指定了“ ^~ ”,特别告诉 Nginx 本条普通 location 一旦匹配上,则不需要继续正则匹配;( 2 )当普通location 恰好严格匹配上,不是最大前缀匹配,则不再继续匹配正则。

4.location的一般应用

提下今天的作业,配置网站静态化,为什么要静态化?搜索优化需要静态化

动静分离的好处?缓存的利用

动静分离:

location ^~ /(images|scripts|styles|upload)/  {

root    /www/abc.com/www/htdocs;

expires 30d;

}

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

root    /www/abc.com/www/htdocs;

expires 30d;

}

三.第三章:nginx访问禁止允许,用户认证,反向代理理论

1.nginx访问禁止允许规则

按照顺序依次检测,直到匹配到第一条规则

样例:

location / {

deny  192.168.1.1;

allow 192.168.1.0/24;

allow 10.1.1.0/16;

allow 2001:0db8::/32;

deny  all;

}

测试屏蔽外面的主机显示,注意这里需要用vmnet8的ip

禁止使用IP访问网站

server {

listen       80;

server_name  "";

return       444;

}

nginx特有的,非http标准的返回码444,它可以用来关闭连接

2.nginx用户认证

需要安装httpd

使用命令htpasswd才创建文件和密码

3.nginx访问状态监控

location /basic_status {

stub_status on;

}

4.代理和反向代理

什么是代理?

代理是为网络用户代理了来访问网络的,比如Google agent代理FQ

什么是反向代理?

代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器

参考博客:http://www.ha97.com/5194.html