nginx[主要是记录解决配置了proxy_pass后报错403的心酸历程]

nginx在windows下的常用命令

准备事项:

# 常用的nginx命令
  # 查看Nginx的版本号:nginx -V
  # 启动Nginx:start nginx   或者  nginx
  # 快速停止或关闭Nginx:nginx -s stop
  # 正常停止或关闭Nginx:nginx -s quit
  # 配置文件修改重装载命令:nginx -s reload
  # 查看windows任务管理器下Nginx的进程命令:tasklist /fi "imagename eq nginx.exe"
  # 终止进程 taskkill /F /pid 252288

报跨域的错误

这里穿插了处理跨域的几个常用的方法:

  1. 后端处理,在响应头拼入 Access-Control-Allow-Origin 等属性,是浏览器制定的解决跨域的方式也叫做CORS
// 设置允许跨域的域名,*代表允许任意域名跨域
	res.header('Access-Control-Allow-Origin', '*');
	//允许的header类型
	res.header('Access-Control-Allow-Header', "Content-Type,Content-Length, Authorization, Accept,X-Requested-With");
	//跨域允许的请求方式
	res.header("Access-Control-Allow-Methods", "DELETE,PUT,POST,GET,OPTIONS");
  1. nginx服务器端处理
    nginx是个代理服务器
    首先要配置反向代理:(proxy_pass属性),由反向代理服务器去选择目标服务器获取数据后返回给浏览器
    然后就跟上面一样:
add_header Access-Control-Allow-Origin *;
    add_header Access-Control-Allow-Methods 'GET, POST, OPTIONS';
    add_header Access-Control-Allow-Headers 'DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type,Authorization';
 
    if ($request_method = 'OPTIONS') {
        return 204;
}

  1. 还要jsonp就是很简单的绕过同源策略,利用script标签不受同源政策的限制,像后端传一个回调函数,后端把要用的东西拼入回调函数里。但是可想而知这是不方便且不安全的。只能使用get请求,还容易收到xss攻击,所以就不细说了。

配置了反向代理之后报错403

来到正题了,因为跨域我是在后端处理的,所以配置了反向代理就可以了,但是配置了反向代理之后,请求页面资源时直接报错403,网上有好几种解法:分别是增加nginx配置,权限问题,后端处理等等等。
但是都跟我的情况不一样,我的情况就非常简单且白痴。如果有遇到的朋友们可以参考。
问题点:
我直接把反向代理地址,配置到location / 里面了,导致第一步请求页面的时候直接去服务器端请求,而不是在代理服务里请求,所以没有token403,而且请求不到资源。
解决
location 匹配规则
首先精确匹配 =
其次前缀匹配 ^~
其次是按文件中出现的顺序,来逐个正则匹配。
然后匹配不带任何修饰的前缀匹配。
最后是交给 / 通用匹配
当有匹配成功时候,停止匹配,按当前匹配规则处理请求
【也就是如下方式】

location ^~ /api/ {
				if ($request_method = 'OPTIONS') {
						return 204;
				}
				proxy_pass http://127.0.0.1:3001;
			}

nice,解决了

server_name

server_name就是访问部署了nginx那台服务器的域名、ip、localhost。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值