Appearance
五、Nginx配置与应用场景
1、最小配置
sh
user nginx; #配置运行nginx的用户
worker_processes 2; #初始的子进程数量
worker_connections 1024; #配置单个进程处理的最大请求连接数
server{ #配置虚拟主机
listen #配置虚拟主机监听端口
server_name #配置服务器域名
location 匹配规则 { } #配置匹配特定的url
root #配置网站根目录
index #配置虚拟主机的默认首页
error_page 404 /404.html; #解释:当出现404的时候,要重定向到网站根目 录下的404.html页面
user
user nginx; #配置运行nginx的用户
worker_processes
worker_processes 1
; 默认为1,表示开启一个业务进程
worker_connections
worker_connections 1024
; 单个业务进程可接受连接数
include mime.types;
include mime.types
; 引入http mime类型
default_type application/octet-stream;
default_type application/octet-stream
; 如果mime类型没匹配上,默认使用二进制流的方式传输。
sendfifile on;
sendfile on
; 使用linux的 sendfile(socket, file, len)
高效网络传输,也就是数据0拷贝。
未开启sendfifile
开启后
keepalive_timeout 65;
keepalive_timeout 65
;
server
虚拟主机配置
nginx
server {
listen 80; 监听端口号
server_name localhost; 主机名
location / { 匹配路径
root html; 文件根目录
index index.html index.htm; 默认页名称
}
error_page 500 502 503 504 /50x.html; 报错编码对应页面
location = /50x.html {
root html;
}
}
2、虚拟主机
原本一台服务器只能对应一个站点,通过虚拟主机技术可以虚拟化成多个站点同时对外提供服务
servername匹配规则
我们需要注意的是servername匹配分先后顺序,写在前面的匹配上就不会继续往下匹配了。
完整匹配
我们可以在同一servername中匹配多个域名
sh
server_name vod.mmban.com www1.mmban.com;
通配符匹配
sh
server_name *.mmban.com
通配符结束匹配
sh
server_name vod.*;
正则匹配
sh
server_name ~^[0-9]+\.mmban\.com$;
3、反向代理
proxy_pass http://baidu.com;
nginx
location / {
proxy_pass http://baidu.com/;
}
4、X-Frame-Options响应头缺失漏洞
故名思意,就是返回的响应头信息中没有包含x-frame-options头信息设置。
x-frame-options头信息的详细介绍可以查看mozilla firefox官方文档
https://developer.mozilla.org/zh-CN/docs/Web/HTTP/X-Frame-Options
X-Frame-Options
有三个可能的值:
nginx
X-Frame-Options: deny
X-Frame-Options: sameorigin
X-Frame-Options: allow-from https://example.com/
换一句话说,如果设置为 deny
,不光在别人的网站 frame 嵌入时会无法加载,在同域名页面中同样会无法加载。另一方面,如果设置为sameorigin
,那么页面就可以在同域名页面的 frame 中嵌套。
deny
表示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许。
sameorigin
表示该页面可以在相同域名页面的 frame 中展示。
allow-from *uri*
表示该页面可以在指定来源的 frame 中展示。
nginx
# 配置 nginx 发送 X-Frame-Options 响应头,把下面这行添加到 ‘http’, ‘server’ 或者 ‘location’ 的配置中:
add_header X-Frame-Options SAMEORIGIN;