配置/etc/nginx/nginx.conf以重定向到单独的主机

时间:2013-02-22 23:23:07

标签: redirect ubuntu nginx

有谁知道如何修改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安装,并没有改变任何其他内容。

1 个答案:

答案 0 :(得分: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/是包为他们想要添加的vhosts配置的地方。 这些不会自动生成,要启用此类网站,您可以将其链接或复制到/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执行此操作,浏览器中显示的网址将自动更改为重写的网址
  • 如果您希望向用户显示的网址保留在&#34; mydomain.com/page1" ;,则需要使用proxy_pass - 指令而不是重写(此类设置的关键字)是反向代理
  • 你使用$ scheme://而不是$ http://因为如果你还有那个vhost听取https://稍后
  • 它会打破这种方式