由于一些糟糕的设计决策,我们有一个应用程序无法响应HTTP HEAD请求(返回“不允许使用方法”)。修改软件以正确返回HEAD请求将很棘手,不是没有可能,但是需要额外的工作。该应用程序位于NGINX代理后面,我想知道是否有一种方法可以使NGINX将从客户端收到的HEAD请求转换为对后端的GET请求,然后丢弃响应(将报头除外)并将其发送回给客户端,就像我们的应用程序服务器能够响应HEAD请求一样。
当前配置(相当标准)
upstream ourupstream{
server unix:/var/apps/sockets/ourapp.socket.thread1
server unix:/var/apps/sockets/ourapp.socket.thread2
server unix:/var/apps/sockets/ourapp.socket.thread3
[like 20 of these]
}
server {
listen 1.2.3.4:80;
server_name ourapp;
access_log /var/apps/logs/ourapp.nginx.plog proxy;
error_log /var/apps/logs/ourapp.nginx.elog info;
gzip on;
gzip_types text/plain text/html;
proxy_intercept_errors on;
proxy_connect_timeout 10;
proxy_send_timeout 10;
proxy_read_timeout 10;
proxy_next_upstream error timeout;
client_max_body_size 2m;
error_page 404 /static/404.html;
error_page 500 501 502 503 504 =500 /static/500.html;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://ourupstream/;
}
location /static/ {
root /var/apps/global/;
}
}
您如何将请求传递给后端?proxy_pass?fastcgi_pass?您可以粘贴当前配置吗?您正在运行哪个版本的Nginx?
—
kolbyjack 2012年
@kolbyjack proxy_pass使用unix套接字,在开发中使用NGINX 1.1.12和1.0.11,在生产中使用1.0.11(我们即将将生产移至1.1.12)
—
涂抹2012年