我使用nginx rewrite将旧URL重定向到新URL,现在curl GET并将请求发布到旧URL don';行不通
我有一个正在运行的服务。我在新服务器上设置了新服务。当通过web访问新服务时,一切正常。但是当我试图通过curl(POST请求)或从中下载(GET请求)登录到旧服务时,我只收到“301永久移动”消息。这是我的nginx.conf:我使用nginx rewrite将旧URL重定向到新URL,现在curl GET并将请求发布到旧URL don';行不通,nginx,curl,nginx-config,Nginx,Curl,Nginx Config,我有一个正在运行的服务。我在新服务器上设置了新服务。当通过web访问新服务时,一切正常。但是当我试图通过curl(POST请求)或从中下载(GET请求)登录到旧服务时,我只收到“301永久移动”消息。这是我的nginx.conf: events { worker_connections 1024; } http { log_format main '$remote_addr - $remote_user [$time_local] "$request" '
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
server {
listen 80;
server_name new-server.net;
server_tokens off;
location / {
return 301 https://$host$request_uri;
}
}
server {
listen 443 ssl;
server_name new-server.net;
server_tokens off;
ssl_certificate /etc/nginx/certs/server.cer;
ssl_certificate_key /etc/nginx/certs/server.key;
location / {
proxy_pass http://new-server.net:8081/;
proxy_set_header Host $http_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-Proto https ;
proxy_redirect http:// https:// ;
}
}
server {
listen 8444 ssl;
server_name old-server.net;
server_tokens off;
ssl_certificate /etc/nginx/certs/server.cer;
ssl_certificate_key /etc/nginx/certs/server.key;
location /devs {
rewrite ^/devs(.*) https://new-server.net$1 permanent;
}
}
}
我使用rewrite是因为新服务器没有旧服务器的/devs/context路径。我不知道如何通过“返回301”行实现这一点。那么,我是否可以允许开发人员继续获取并发布到旧的URL,并将这些请求发送到新的URL?告诉curl遵循重定向?1)告诉curl遵循位置。2) 将301更改为307(这将告诉浏览器重试请求,因此将再次对新URL发出POST请求;301不会发生这种情况).我知道如何执行像
return307这样的命令$scheme://new-server.net$request_uri
,但这不能解释新服务器没有“/devs/”上下文路径这一事实。如何返回307并删除“/devs/”上下文路径?