nginx强制重写完整地址

nginx强制重写完整地址

在我的企业内联网上,可以通过两种方式访问​​网站。使用其别名(例如)https://foo或使用其完整地址(例如)https://foo.example.internal

我想配置我的 nginx 服务器以强制用户使用第二个选项。因此,如果他们浏览https://foo,我希望 nginx 服务器将地址重写为https://foo.example.internal

我尝试了几种选择:

http {
  server {
    server_name foo;

    # Test 1
    rewrite ^https://foo/(.*)$ https://foo.example.internal/$1;

    # Test 2
    rewrite ^/foo/(.*)$ https://foo.example.internal/$1;

    # Test 3
    rewrite ^/(.*) https://foo.example.internal/$1;
  }
}

Test1Test2没有效果(即用户可以访问https://foo或上的网站https://foo.example.internal),而从到Test3重写但最新不起作用(nginx 服务器没有返回任何内容,我怀疑该 URL 重写中存在一些循环)。https://foohttps://foo.example.internal

那么,我怎样才能强制 nginx 重写https://foohttps://foo.example.internal

谢谢

答案1

终于找到了问题所在。可行的解决方案是通过设置 2 个服务器来完成的:

http {

  server {
    server_name foo;
    listen 443 ssl;

    return 301 https://foo.example.internal$request_uri;
  }

  server {
    server_name foo.example.internal;
    listen 443 ssl;

    # rest of configuration
  }


}

相关内容