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

Mic*_*kan 2 ubuntu redirect 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;
}
Run Code Online (Sandbox Code Playgroud)

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

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

cob*_*aco 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/是将包装配置为要添加的vhost的位置.它们不会自动激活,以启用您要链接的网站或将其复制到的网站/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 / {}
}
Run Code Online (Sandbox Code Playgroud)

有关该配置的说明:

  • 如果您使用rewrite上述方法执行此操作,则浏览器中显示的网址将自动更改为重写的网址.
  • 如果您希望显示给用户的网址保留为"mydomain.com/page1",则需要使用proxy_pass -directive而不是重写(此类设置的关键字是反向代理)
  • 你使用$ scheme://而不是$ http://因为如果你还有那个vhost在https://上听,它就不会破坏