2

有谁知道如何修改 nginx.conf 文件以重定向到另一台主机?我想将http://mydomain.com/page1http://mydomain.com/page2指向本地网络上的单独主机。mydomain.com/page1 应该转到 10.100.0.163,mydomain.com/page2 应该转到 10.100.0.164。

这是我添加到我的 Ubuntu 服务器上 nginx.conf 文件的 HTML 部分的内容。

location /page1/ {
rewrite ^/page1/(.*)$ http://10.100.0.163/$1 permanent;
}

location /page2/ {
rewrite ^/page2/(.*)$ http://10.100.0.164/$1 permanent;
}

还有什么我需要添加到 nginx.conf 文件中的吗?我还需要修改其他配置文件吗?

我只是做了一个标准的 nginx 安装,并没有改变任何其他东西。

4

1 回答 1

8

在基于 Debian 的发行版(包括 Ubuntu)上,以下注意事项适用于 nginx(apache 软件包使用类似的布局):

  • /etc/nginx/nginx.conf是主配置文件
  • 主配置文件包括所有文件/etc/nginx/conf.d/etc/nginx/sites-enabled
  • /etc/nginx/conf.d/<some-file>是您在主配置中添加内容的地方。
    • 如果除了 nginx 之外的任何包添加配置,它们将在/etc/nginx/conf.d/<packagename>(想想像 gitweb 或一些 php-thing 之类的包)。
    • 添加一个文件/etc/nginx/conf.d/local/etc/nginx/conf.d/local_something在其中添加您需要的任何内容。
    • 通过像这样将事情分开,可以很容易地确定任何潜在的问题在哪里。
  • /etc/nginx/sites-enabled/<some-file>是您放置虚拟主机所需的配置添加的位置,每个虚拟主机 1 个文件。通过分离虚拟主机,可以更容易地知道在哪里寻找更改/修复的东西(如您所知,自动忽略与该虚拟主机无关的所有内容)。
  • /etc/nginx/sites-available/是软件包为他们想要添加的虚拟主机放置配置的地方。这些不会自动激活,要启用这样的站点,您可以将其链接或复制到/etc/nginx/sites-enabled/

由于您要添加的内容特定于mydomain.com 虚拟主机,因此您应该将它们添加到/etc/nginx/sites-enabled/mydomain.com. 其中的内容应该是这样的:

server{
  server_name mydomain.com;

  location /page1/ { rewrite ^/page1/(.*)$ $scheme://10.100.0.163/$1 permanent; }
  location /page2/ { rewrite ^/page2/(.*)$ $scheme://10.100.0.164/$1 permanent; }

  #add config needed to server whatever else on 
  #location / {}
}

关于该配置的注意事项:

  • 如果你rewrite按照上面的方式进行操作,浏览器中显示的 url 将自动更改为重写后的 url
  • 如果您希望向用户显示的 url 保持“mydomain.com/page1”,您需要使用proxy_pass -directive 而不是 rewrite(这种设置的关键字是reverse proxy
  • 您使用 $scheme:// 而不是 $http:// 因为如果您稍后也让该虚拟主机在 https:// 上收听,它不会破坏这种方式
于 2013-02-23T08:01:18.150 回答