我正在从我的前端应用程序发出一个post请求,请求运行在服务器上的节点应用程序并侦听4001端口。请求看起来像:https://domain.name.com:4001/login-和wokrs罚款。我想隐藏一个端口,并在NGINX中进行转发,这样在我的前端应用程序中,我就可以像https://domain.name.com/login一样发出请求。
我已经尝试了这个NGINX配置,但它不工作,仍然得到错误405(NotAllow):
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name domen.name.com;
ssl_certificate /etc/nginx/certificate/domain.crt;
ssl_certificate_key /etc/nginx/certificate/domain.key;
root /mnt/storage/app/frontend/build;
index index.php index.html index.htm index.nginx-debian.html;
location ~ ^/ {
try_files $uri $uri/ /index.html;
}
location /login {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:4001/login;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_method POST;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
字符串
405 =200 $uri;- 没用
1条答案
按热度按时间txu3uszq1#
您面临的问题可能与POST请求方法的处理有关。默认情况下,NGINX按原样转发请求方法,但某些应用程序或API可能不支持在执行代理时直接转发某些方法(例如
POST
)。要解决此问题,您可以尝试以下操作:
删除此行,而不是指定
proxy_method POST;
。默认情况下,NGINX将转发原始请求方法。在
/login
位置块中添加proxy_set_header X-Forwarded-Method $request_method;
,以设置X-Forwarded-Method
头,这将跟踪原始请求方法。字符串
更新配置后,不要忘记重新启动或重新加载NGINX服务器以应用更改:
型