首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无论server_name,nginx似乎都使用重写。

无论server_name,nginx似乎都使用重写。
EN

Stack Overflow用户
提问于 2014-11-19 12:59:04
回答 2查看 100关注 0票数 0

我有以下配置文件。

代码语言:javascript
复制
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。(阿格)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-19 17:56:00

这不是这个问题的严格解决办法。

正在发生的情况是,您只有一个服务器块,它将成为所有请求的默认服务器块,甚至那些与服务器名称不匹配的请求。只需在配置中添加一个默认服务器块:

代码语言:javascript
复制
server {
    listen 80 default_server;
} 

顺便说一句,您有一个错误(permanent之前的分号),您不需要重写,因为您有特定的正则表达式。用这个代替:

return 301 http://www.example.net$request_uri;

票数 1
EN

Stack Overflow用户

发布于 2014-11-19 12:59:51

过了一会儿..。

我发现我需要周围的位置/{}。

代码语言:javascript
复制
  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;
    }
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27017446

复制
相关文章

相似问题

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