我正在将站点移动到在 NGINX 上运行的新服务器。旧站点的 Apache2 VirtualHost 已ServerAlias配置,我想在 NGINX 配置中复制。
从我在 NGINX Docs 上读到的内容来看,这似乎可以通过server_name.
我只是想确保我拥有的是正确的。
从 APACHE2
ServerAlias our-domain.com www1.our-domain.com our-domain.ie
Run Code Online (Sandbox Code Playgroud)
到 NGINX
server_name www.our-domain.com our-domain.com www.our-domain.ie our-domain.ie;
Run Code Online (Sandbox Code Playgroud) 我有一个需要支持自定义域的 Web 应用程序,在这方面,我设置了以下基于名称的虚拟服务器:
<VirtualHost *:80>
ServerName example.com
ServerAlias * *.example.com www.example.com example.com
RailsEnv production
RackEnv production
DocumentRoot /srv/www/example/current/public
<Directory /srv/www/example/current/public>
AllowOverride all
Options -MultiViews FollowSymLinks
</Directory>
ErrorLog /srv/www/example/log/error.log
TransferLog /srv/www/example/log/access.log
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
注意到 * 作为服务器别名了吗?捕获该服务器上的所有域。但是,我希望从该列表中排除此服务器上的其他站点。对我来说,拥有一个排除域列表比手动将用户可能在此服务注册的每个域设置为 serverAlias 更经济...
也许这不是最好的方法,但我正在寻求帮助,以最好(相对简单)的方式来设置可以捕获任何域的网络应用程序,同时允许将其他特定域路由到不同的应用程序.
我正在尝试将多个主机名重定向到一个,例如,如果您输入以下任何一个:
foo.example.com
www.example.com
bar.example.com
eample.com
Run Code Online (Sandbox Code Playgroud)
你必须被重定向到 www.example.com
我已经安装了一个www.example.com作为 ServerName的虚拟主机,其他的作为 ServerAlias,并使用 mod_rewrite 检查主机名是否正确,如果不正确则进行重定向。
问题是一切似乎都与 ServerName 指令主机名一起提供,所以 mod_rewrite 总是得到www.example.com,这与 apache2 文档一致:
例如,假设您正在为域 www.domain.tld 提供服务,并且您希望添加指向相同 IP 地址的虚拟主机 www.otherdomain.tld。然后您只需将以下内容添加到 httpd.conf:
名称虚拟主机 *:80
<VirtualHost *:80>
ServerName www.domain.tld
ServerAlias domain.tld *.domain.tld
DocumentRoot /www/domain
<VirtualHost *:80>
服务器名称 www.otherdomain.tld
DocumentRoot /www/otherdomain您也可以指定显式 IP 地址来代替 NameVirtualHost 和指令中的 *。例如,您可能希望这样做是为了在一个 IP 地址上运行一些基于名称的虚拟主机,以及在另一个地址上运行基于 IP 或另一组基于名称的虚拟主机。
许多服务器希望通过多个名称进行访问。这可以通过放置在该部分内的 ServerAlias 指令实现。例如,在上面的第一个块中,ServerAlias 指令指示列出的名称是人们可以用来查看同一网站的其他名称:
ServerAlias domain.tld *.domain.tld 然后对 domain.tld 域中所有主机的请求将由 www.domain.tld 虚拟主机提供服务。
是否有任何 apache2 指令来避免此功能并使用它们匹配的 ServerAlias 的主机名获取请求服务器?
或者我必须为重定向创建另一个虚拟主机?
谢谢
我正在使用 WordPress 网络子域设置。我不得不把它 *.mydomain.com作为服务器别名,但现在我还有一个subdomain.mydomain.com指向另一个目录的站点。有没有办法做到这一点,因为当我输入subdomain.mydomain.com它时,它只会加载 WordPress 注册页面。
我确实有一个虚拟主机设置。
我们有一个中央 httpd.conf,我们包含了各种虚拟主机的 confs。直到今天,我们才真正需要“www.subdomain.site.com”域,只需要“subdomain.site.com”。现在我们这样做了,所以我想弄清楚这两种方法中哪一种更好:
[1]。使用重写:
RewriteCond %{HTTP_HOST} ^www.subdomain.site.com
RewriteRule ^(.*)$ http://subdomain.site.com$1 [R=301]
Run Code Online (Sandbox Code Playgroud)
或者
[2]。使用 ServerAlais:
<VirtualHost 111.22.33.44:80>
ServerName subdomain.site.com
ServerAlias www.subdomain.site.com
Include conf/subdomain.conf
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
我想对 Rewrite 进行更多处理,但不确定 ServerAlias 在这种混合中的表现。一个比另一个获得更好的 SEO foo 吗?
欢迎任何和所有想法!
谢谢,
知识管理
我知道可以对子域别名使用通配符,例如:
ServerAlias *.domain.com
Run Code Online (Sandbox Code Playgroud)
但是,它可能使用的域具有相同的域名?
# like this
ServerAlias subdomain.*.com
Run Code Online (Sandbox Code Playgroud) 目前,我有一个 VirtualHost 定义如下:
<VirtualHost *:80>
ServerName mydomain.com
ServerAlias otherdomain.com
DocumentRoot /var/www/project/
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
如何制作仅影响otherdomain.com域的别名:
Alias /sub /var/www/other
Run Code Online (Sandbox Code Playgroud)
以便:
http://otherdomain.com/sub -> /var/www/other
http://mydomain.com/sub -> /var/www/project/sub
Run Code Online (Sandbox Code Playgroud)
有问题的 VirtualHost 实际上并没有那么简单,所以我不想为此单独制作 VirtualHost。我可以在 VirtualHost 中使用任何条件表达式或类似的东西吗?类似的东西:
<VirtualHost *:80>
...
<If ServerName=otherdomain.com>
Alias /sub /var/www/other
</If>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud) 我有一个带有两个 VirtualHosts 的简单 apache2 设置。一种是带有“普通”字符的域名,一种带有外来字符(带有 punycode)。
问题是我不知道如何将“www”添加为 punycode 域的别名。使用“正常”的它工作正常。
这是“正常”主机:
ServerName aev25.no
ServerAlias www.aev25.no
Run Code Online (Sandbox Code Playgroud)
我可以使用名称和别名访问正确的站点。
这是“外国”/punycode 主机:
ServerName xn--hvin-gra.no
ServerAlias høvin.no
Run Code Online (Sandbox Code Playgroud)
现在,由于我没有带有“www”的别名,它自然不会那样工作。但是,如果我尝试添加另一个别名,如下所示:
ServerName xn--hvin-gra.no
ServerAlias høvin.no
ServerAlias www.høvin.no
Run Code Online (Sandbox Code Playgroud)
或这个:
ServerName xn--hvin-gra.no
ServerAlias høvin.no www.høvin.no
Run Code Online (Sandbox Code Playgroud)
它不起作用。它只是打开默认的 apache2 站点。所以这似乎不是正确的方法,即使 apache2 没有抱怨。
我还有一个域 aev25.no 的设置,其中 ServerAlias 是 www.aev25.no。这工作正常,这应该表明问题与 www.*. 无关:
ServerName aev25.no
ServerAlias wwwaev25.no
Run Code Online (Sandbox Code Playgroud)
(工作正常)
那么,如何向域中添加另一个别名?或者我应该以另一种方式做到这一点?
注意:apache2 版本是 2.2.22。
我有这个工作,然后我的VM服务器崩溃了。
我在 Oracle VirtualBox 上运行 Ubuntu。现在我正在尝试添加一些服务器别名,但它不起作用。
在我的“启用站点”文件夹中,我有一个名为mysite.com. 这有以下数据:
<VirtualHost *:80>
DocumentRoot /var/www/mysite/
ServerName mysite.com
ServerAlias www.mysite.com, sub1.mysite.com, sub2.mysite.com
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
<Directory /var/www/storelocator/>
AllowOverride All
Allow from all
</Directory>
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)
但是我仍然无法使用 sub1.mysite.com 访问该站点。它只显示 www 根文件夹中的文件夹。
我在这里缺少什么?
serveralias ×9
apache-2.2 ×7
virtualhost ×4
alias ×2
debian-lenny ×1
host ×1
linux ×1
nginx ×1
redirection ×1
rewrite ×1
ubuntu ×1
wildcard ×1
wordpress ×1