首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Nginx反向代理405放入Chrome

Nginx反向代理405放入Chrome
EN

Stack Overflow用户
提问于 2018-12-19 22:53:45
回答 2查看 5K关注 0票数 1

当我尝试通过Nginx反向代理向Tomcat服务器请求时,我得到了一个405响应。

如果我直接请求tomcat服务器,它会在Chrome或Firefox上成功工作。但如果我请求Nginx代理,我会从Chrome得到一个405,但在Firefox上可以工作。

我一直在我的nginx.conf中的位置/foo/{ ... }下使用不同的配置进行测试。

我试过了:

代码语言:javascript
复制
error_page 405 =200 $uri;

也是

代码语言:javascript
复制
 add_header "Allow" "GET, POST, HEAD, PUT, DELETE" always;
    add_header "Access-Control-Allow-Methods" "GET, POST, PUT, DELETE, OPTIONS" always;`

location / {
    dav_methods PUT DELETE;
    proxy_pass http://csprocure;
}

我的重定向nginx.conf如下:

代码语言:javascript
复制
upstream serverS {
   server xxx.xxx.xxx.xxx:yyyy;
}

server {

    listen 80;
    server_name $hostname;
    access_log  /var/log/nginx/access.log;
    error_log   /var/log/nginx/error.log;
    error_log   /dev/stdout info;
    access_log  /dev/stdout;

    location /foo/ {
        proxy_pass         http://serverS;
        proxy_redirect     http://xxx.xxx.xxx.xxx/ http://xxx.xxx.xxx.xxx:yyyy/;
        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_set_header   X-Forwarded-Host $server_name;
        proxy_set_header   X-Forwarded-Proto: https;
    }

我可以在我的配置中添加什么来避免Chrome中的405?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-12-26 13:33:41

我一直在比较Firefox和Chrome之间的请求,Chrome方面有所不同,在请求Chrome中,Chrome在头请求中添加了一个"Origin“参数,这导致了错误。

因此在我的nginx.conf中,我在location/下添加了参数以避免出现这种情况

代码语言:javascript
复制
proxy_set_header Origin "";

因此,我的位置配置块现在是:

代码语言:javascript
复制
location /foo/ {
    proxy_set_header Origin "";
    proxy_pass         http://serverS;
    proxy_redirect     http://xxx.xxx.xxx.xxx/ http://xxx.xxx.xxx.xxx:yyyy/;
    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_set_header   X-Forwarded-Host $server_name;
    proxy_set_header   X-Forwarded-Proto: https;
}
票数 2
EN

Stack Overflow用户

发布于 2018-12-20 06:09:07

可以在网上找到关于将HTTP方法列入白名单的一个很好的解释:here

这对我来说很有效:

代码语言:javascript
复制
add_header Allow "GET, POST, HEAD, PUT, DELETE" always;

if ( $request_method !~ ^(GET|POST|HEAD|PUT|DELETE)$ ) {
   return 405;
}

显然,在测试更改之前,请确保检查配置nginx -t并重新加载配置nginx -s reload

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53853776

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档