nginx配置字段详解
来源:互联网 发布:python 爬虫 股票数据 编辑:程序博客网 时间:2024/06/05 23:05
#表示注释
########### 每个指令必须有分号结束。#################1、全局块:配置影响nginx全局的指令。一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等。
2、events块:配置影响nginx服务器或与用户的网络连接。有每个进程的最大连接数,选取哪种事件驱动模型处理连接请求,是否允许同时接受多个网路连接,开启多个网络连接序列化等。
3、http块:可以嵌套多个server,配置代理,缓存,日志定义等绝大多数功能和第三方模块的配置。如文件引入,mime-type定义,日志自定义,是否使用sendfile传输文件,连接超时时间,单连接请求数等。
4、server块:配置虚拟主机的相关参数,一个http中可以有多个server。
5、location块:配置请求的路由,以及各种页面的处理情况。
nginx文件结构... #全局块events { #events块 ...}http #http块{ ... #http全局块 server #server块 { ... #server全局块 location [PATTERN] #location块 { ... } location [PATTERN] { ... } } server { ... } ... #http全局块}
# user administrator administrators; #配置用户或者组,默认为nobody nobody。
# worker_processes 2; #允许生成的进程数,默认为1
# pid /nginx/pid/nginx.pid; #指定nginx进程运行文件存放地址
# error_log log/error.log debug; #制定日志路径,级别。这个设置可以放入全局块,http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#设定虚拟主机配置 server { #侦听80端口 listen 9004;#定义使用 127.0.0.1.访问,如果是域名,则使用该域名访问 server_name 127.0.0.1;#定义服务器的默认网站根目录位置 root /home/deploy/data/app/WebProjects/sevendData/;# 设定本虚拟主机的访问日志# access_log logs/nginx.access.log main;# 默认请求# location / {# #定义首页索引文件的名称# index index.php index.html index.htm; # } # 定义错误提示页面# error_page 500 502 503 504 /50x.html;# location = /50x.html {# }#静态文件,nginx自己处理# location ~ ^/(images|javascript|js|css|flash|media|static)/ {# #过期30天,静态文件不怎么更新,过期可以设大一点,# #如果频繁更新,则可以设置得小一点。# expires 30d;# }location ~*^.+$ { #请求的url过滤,正则匹配,~为区分大小写,~*为不区分大小写。# expires起到控制页面缓存的作用,合理的配置expires可以减少很多服务器的请求# 要配置expires,可以在http段中或者server段中或者location段中加入 location ~ \.(gif|jpg|jpeg|png|bmp|ico)$ { root /var/www/img/; expires 30d; }# 控制图片等过期时间为30天,当然这个时间可以设置的更长。具体视情况而定比如#本地动静分离反向代理配置 #所有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; }}} index index.html index.htm;在这个例子中文档根(doucument root)位于html/目录。根据nginx的安装目录/usr/local/nginx,这个location的完整路径是/usr/local/nginx/html。假设一个请求访问位于/blog/includes/styles.css文件同时没有别的location块匹配,那么nginx会用位于文件系统的/usr/local/nginx/html/blog/includes/styles.css响应。当然你也可以用绝对路径设置root指令。index指令会告诉nginx使用哪个资源如果请求中没有文件名。因此,如果请求http://.ducklington.org/将会补全资源位置为/usr/local/nginx/html/index.html。如果index配置了多个文件,nginx会按顺序处理直到找到第一个存在的补全资源。如果index.html在相关目录中没有,那么将使用index.htm。如果两个都不存在,会返回404错误。location = /login { #规则B } 访问 http://localhost/login 将匹配规则B location /data/api { proxy_pass http://127.0.0.1:9003; #请求转向 http://127.0.0.1:9003; 定义的服务器列表 proxy_set_header Host $host; proxy_set_header用来重定义发往后端服务器的请求头。一般而言,会用$host代替$http_host变量,从而避免http请求中丢失Host头部的情况下Host不被重写的失误。 proxy_set_header X-Real-IP $remote_addr; $remote_addr输出结果为真实客户端IP什么是remote_add?remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间没有任何代理,那么网站的web服务器(Nginx,Apache等)就会把remote_addr设为你的机器IP,如果你用了某个代理,那么你的浏览器会先访问这个代理,然后再由这个代理转发到网站,这样web服务器就会把remote_addr设为这台代理机器的IP什么是x_forwarded_for?正如上面所述,当你使用了代理时,web服务器就不知道你的真实IP了,为了避免这个情况,代理服务器通常会增加一个叫做x_forwarded_for的头信息,把连接它的客户端IP(即你的上网机器IP)加到这个头信息里,这样就能保证网站的web服务器能获取到真实IP $http_host和$remote_addr都是nginx的导出变量 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #后端的Web服务器可以通过X-Forwarded-For获取用户真实IP,配合这个把真实的ip 发送给 转发的web服务器,要不 的话 接收请求的 收到的请求ip都是 nginx这台的#以下是一些反向代理的配置,可选。 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服务器传 deny 127.0.0.1; #拒绝的ip allow 172.18.5.54; #允许的ip } }*注意:1.$remote_addr 与$http_x_forwarded_for 用以记录客户端的ip地址;2.$remote_user :用来记录客户端用户名称;3.$time_local : 用来记录访问时间与时区;4.$request : 用来记录请求的url与http协议;5.$status : 用来记录请求状态;成功是200;6.$body_bytes_sent :记录发送给客户端文件主体内容大小;7.$http_referer :用来记录从那个页面链接访问过来的; 8.$http_user_agent :记录客户端浏览器的相关信息;
server { listen 80; server_name sevendpolicy.audit.zeus.com; root /home/deploy/data/app/sevendPolicyAudit/dist/; index index.html index.htm; location /api { proxy_pass http://localhost:30018; 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 /graph-platform { proxy_pass http://112.74.195.151; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } server { listen 80; server_name sevendpolicy.audit.zeus.com; root /home/deploy/data/app/sevendPolicyAudit/dist/; index index.html index.htm; location /api { proxy_pass http://localhost:30018; 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 /graph-platform { proxy_pass http://112.74.195.151; 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_buffering off;
add_header ‘Access-Control-Allow-Origin’ ‘*’;
add_header ‘Access-Control-Allow-Headers’ ‘Content-Type,Accept’;