【问题标题】:configure /etc/nginx/nginx.conf to redirect to separate host配置 /etc/nginx/nginx.conf 以重定向到单独的主机
【发布时间】:2013-02-22 23:23:06
【问题描述】:

有谁知道如何修改 nginx.conf 文件以重定向到另一台主机?我想将http://mydomain.com/page1 和http://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 安装,并没有改变任何其他东西。

【问题讨论】:

  • 你的意思是它从主机B拉数据,同时仍然显示主机A的url?因为如果是这样,谷歌“nginx反向代理”

标签: redirect ubuntu nginx


【解决方案1】:

在基于 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 之类的包)。
    • 在其中添加一个文件 /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 而不是重写(这种设置的关键字是反向代理)
  • 您使用 $scheme:// 而不是 $http://,因为如果您稍后也让该虚拟主机在 https:// 上侦听,它不会破坏这种方式

【讨论】:

  • 感谢您的建议。我将使用您建议的服务器功能在启用站点的文件夹中创建一个名为“mydomain.com”的文件。这是你建议我做的唯一事情吗?我是否还需要向其他 nginx 配置文件之一添加一些内容,以便它知道该虚拟主机存在?
  • 如果您查看 /etc/nginx/nginx.conf,您会注意到它有 include /etc/nginx/sites-enabled/*; 行,这使得它可以拾取启用站点的文件夹中的任何文件(注意:仅限 nginx在重新启动或重新加载时通知配置更改,因此您确实需要执行service nginx reload)。你所描述的不需要任何其他东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-10-01
  • 2021-02-15
  • 2021-11-22
  • 2019-01-28
  • 2019-07-27
  • 2011-03-26
  • 2020-03-30
相关资源
最近更新 更多