nginx配置字段详解

原文地址为: nginx配置字段详解

#表示注释
########### 每个指令必须有分号结束。#################

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’;


转载请注明本文地址: nginx配置字段详解

猜你喜欢

转载自blog.csdn.net/linjcai/article/details/80868048