nginx-2.其他配置例举
其他配置
nginx自动生成目录首页
location下面的配置 autoindex on 可以映射文件目录
location / { #location里面是虚拟主机映射的位置,/表示所有
root html; #静态文件目录
autoindex on; #根据当前目录自动生成首页
}
nginx黑白名单
可以指定ip指定资源是否能被访问,被拒绝的显示403 Forbidden
#语法
allow address | CIDR | all;
deny address | CIDR | all;
#模块:http/server/location
#参数说明:
#allow:允许访问。
#deny:禁止访问。
#address:具体的ip地址。
#CIDR:ip加掩码形式地址。
#all:所有ip地址。
配置例子
#指定ip被允许
location / { #location里面是虚拟主机映射的位置
root html; #根目录文件夹
index index.html index.htm; #首页
deny all; #拒绝所有IP
allow 192.168.1.6 #只允许192.168.1.6
}
#指定ip被拒绝
location / { #location里面是虚拟主机映射的位置
root html; #根目录文件夹
index index.html index.htm; #首页
allow all; #允许所有IP
deny 192.168.1.6 #拒绝192.168.1.6
}
#指定文件被拒绝
location ^~ /project/deny.txt {
alias /webroot/proj/;
deny all;
}
nginx文件包含
nginx.conf文件
http {
include mime.types; #这里包含的types块也可以包含http下面的块比如server等
include vhost/*.conf; #vhost目录下 所有.conf结尾的配置文件
default_type application/octet-stream; #默认文件类型
#省略
....
}
被包含文件
vhost/order.lomi.com.conf
server { #一个server就是一个虚拟主机
listen 80; #虚拟主机端口
server_name localhost; #IP或者域名
#charset koi8-r;
#access_log logs/host.access.log main; #每个虚拟主机可以独立设置日志位置
location / { #location里面是虚拟主机映射的位置
root html; #根目录文件夹
index index.html index.htm; #首页
deny all; #拒绝所有IP
allow 192.168.1.6 #只允许192.168.1.6
}
#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 { #精确匹配50x.html资源位置
root html;
}
nginx设置http证书
server {
listen 443 ssl;
server_name localhost;
ssl_certificate cert.pem; #指定https证书
ssl_certificate_key cert.key; #指定https证书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;
}
}
nginx日志文件位置
#user nobody;
worker_processes 1; #一般是1,可以和线程数量一样
#error_log logs/error.log; #异常日志位置
events {
worker_connections 1024; #单个work-process允许的最大连接数
}
http {
include mime.types; #这里包含的types块也可以包含http下面的块比如server等
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; #全局访问日志
server { #一个server就是一个虚拟主机
listen 80; #虚拟主机端口
server_name localhost; #IP或者域名
access_log logs/host.access.log main; #每个虚拟主机可以独立设置的访问日志
location / { #location里面是虚拟主机映射的位置
.
.
.
}
}
nginx代理前端页面跨域问题(CORS)
出现原因是前后端分离以后前端页面在一个域名A,然后后端接口放在另外一个域名B下面
-
nginx解决方案1:ngixn接受域名A和域名B的请求,然后分别转发给前端页面和后端接口服务器,这时候浏览器请求的都是nginx服务对应的域名,浏览器不会识别为跨域。
#这里是前端静态资源 location /page { proxy_pass http://A; } #后端接口 location /api { proxy_pass http://B; } -
nginx决绝方案2:接口服务的转发过程中,添加响应头允许前端域名跨域。
location / { alias html; index index.html index.htm; add_header Access-Control-Allow-Origin "*"; #这里的*应该是前端域名 http://A add_header Access-Control-Allow-Methods "POST, GET, OPTIONS, DELETE, PUT"; add_header Access-Control-Allow-Headers 'DNT,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Range'; add_header Access-Control-Expose-Headers 'Content-Length,Content-Range'; proxy_pass http://192.168.1.6; } -
解决办法3,:直接在接口程序那边加上允许指定前端页面跨域的响应头,这种办法不是很好,因为开发者不一定能确定后期部署时候前面页面允许跨域的域名。允许所有跨域只能出现在测试环境,或者说就不应该出现。
后端允许跨域参考
能耍的时候就一定要耍,不能耍的时候一定要学。
--天道酬勤,贵在坚持posted on 2024-01-24 01:29 zhangyukun 阅读(13) 评论(0) 收藏 举报
浙公网安备 33010602011771号