我有以下配置文件。
server {
listen 80;
server_name web.example.com;
access_log /var/www/example/shared/log/web.access.log;
error_log /var/www/example/shared/log/web.error.log debug;
rewrite ^/(.*)$ http://www.example.net$request_uri; permanent;
}当我请求curl -Ii -H "Host: example.com“http://example.com时,上述重写规则有效。(阿格)。
server_name显式地说"web.example.com“
2014/11/18 22:49:20通知30694#0: 1868年"^/(.)$“匹配”“,客户端: 1.2.3.4,服务器: web.example.com,请求:"HEAD / HTTP/1.1",主机:"example.com”2014/11/18 22:49:20通知30694#0:*1868重写重定向:"http://www.example.net/",客户端: 1.2.3.4,服务器: web.example.com,请求:"HEAD / HTTP/1.1",主持人:"example.com“
这里不存在的是另一个服务器{}信任。泽维尔(以下)指出,我已将default_server设置为聆听: 443;但没有设置为侦听: 80。(阿格)
发布于 2014-11-19 17:56:00
这不是这个问题的严格解决办法。
正在发生的情况是,您只有一个服务器块,它将成为所有请求的默认服务器块,甚至那些与服务器名称不匹配的请求。只需在配置中添加一个默认服务器块:
server {
listen 80 default_server;
} 顺便说一句,您有一个错误(permanent之前的分号),您不需要重写,因为您有特定的正则表达式。用这个代替:
return 301 http://www.example.net$request_uri;
发布于 2014-11-19 12:59:51
过了一会儿..。
我发现我需要周围的位置/{}。
server {
listen 80;
server_name web.example.com;
access_log /var/www/example/shared/log/web.access.log;
error_log /var/www/example/shared/log/web.error.log debug;
location / {
rewrite ^/(.*)$ http://www.example.net$request_uri permanent;
}
}https://stackoverflow.com/questions/27017446
复制相似问题