有谁知道如何修改 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 的标准安装,没有更改任何其他内容。
最佳答案
在基于 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
里面有您需要的任何补充。 - 通过这样区分事物,可以轻松确定潜在问题所在。
- 如果 nginx 之外的任何软件包添加配置,这些配置将位于
-
/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
来执行此操作如上,浏览器中显示的网址将自动更改为重写后的网址。 - 如果您希望向用户显示的网址保留为“mydomain.com/page1”,则需要使用 proxy_pass -指令而不是重写(这种设置的关键字是反向代理)
- 您使用 $scheme://而不是 $http://,因为如果您稍后也让该虚拟主机监听 https://,它不会破坏这种方式
关于redirect - 配置/etc/nginx/nginx.conf重定向到单独的主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15034901/