【24届毕业生】新手尝试设置重定向【Apache】【AWS】

大家好,我是Inu,一位人文专业毕业生,也是一名正在接受培训的基础设施工程师,将于2024年毕业。
最近,我只想保持清醒的头脑,而不是晕头转向。

这一次,我想以原始的、物理的、恋物癖的方式来分享我这个完全的初学者所学到的关于重定向设置的知识。

什么是重定向?

首先,我们来看看维基百科的解释。

重定向(转发)功能是将文章链接重定向到另一个页面。这样的页面称为重定向页面(转发页面)。

引用: https://ja.wikipedia.org/wiki/Wikipedia:%E3%83% E3%82%AF%E3%83%88#:~:文本=%E3%83%AA%E3%83%80%E3%82%A4%E3%83%AC%E3%82%AF%E3%83% 88%EF%BC%88%E8%BB%A2%E9%80%81%EF%BC%89%E3%81%A8%E3%81%AF%E3%80%81,%E3%81%99%E3 %82%8B%E6%A9%9F%E8%83%BD%E3%81%AE%E3%81%93%E3%81%A8%E3%81%A7%E3%81%99%E3%80%82 (截至2024年10月7日)

正是如此。

你是否曾经在访问旧主页时被自动重定向到新页面?

这就是“重定向”的

我们来尝试设置重定向。

如何设置重定向?

所以,这次我想尝试通过在服务器端设置使用 AWS ALB 重定向到“www.hogehoge.info”

验证环境

如何在服务器端进行设置,我们使用了以下验证环境进行设置。

Virtualbox:版本 7.0.20

Vagrant:版本 2.4.1

以下是如何使用 Vagrant 设置测试环境:

使用 Vagrant 构建您自己的测试环境

Vagrant box:AlmaLinux 9

Apache:版本 2.4.57

步骤 1:在服务器端进行设置

如果要在服务器端进行设置,请尝试向虚拟主机的配置文件添加别名,并向虚拟主机的“.htaccess”文件中添加一行。

① 向虚拟主机配置文件添加别名

首先,使用以下命令检查虚拟主机列表。

httpd -S

执行结果显示,该服务器包含“www.hogehoge.info”和“nova-prod.byd-edu.info”。

■执行结果 VirtualHost 配置:*:80 是一个 NameVirtualHost 默认服务器 www.hogehoge.info (/etc/httpd/conf.d/hogehoge.conf:1) 端口 80 namevhost www.hogehoge.info (/etc/httpd/conf.d/hogehoge.conf:1) 端口 80 namevhost nova-prod.byd-edu.info (/etc/httpd/conf.d/nova-prod.byd-edu.info.conf:1) ServerRoot: "/etc/httpd" ~省略~

现在,让我们使用 less 命令来查看“www.hogehoge.info”的配置文件。

删除 /etc/httpd/conf.d/hogehoge.conf

设置保持默认,因此我们将在此处添加“ServerAlias”。

■执行结果<VirtualHost *:80>服务器名称 www.hogehoge.info 文档根目录 "/var/www/vhosts/hogehoge.info/public_html" 目录索引 index.php index.html index.xml<Directory /var/www/vhosts/hogehoge.info/public_html > Options FollowSymLinks AllowOverride all</Directory>自定义日志“/var/log/httpd/hogehoge.info-access_log” 合并错误日志“/var/log/httpd/hogehoge.info-error_log”</VirtualHost>

使用 vi 命令编辑“www.hogehoge.info”的配置文件。

vi /etc/httpd/conf.d/hogehoge.conf

进入编辑模式,然后在 ServerName 下添加“ServerAlias”。

<VirtualHost *:80>服务器名称 www.hogehoge.info 服务器别名 hogehoge.info ←这里! 文档根目录 "/var/www/vhosts/hogehoge.info/public_html" 目录索引 index.php index.html index.xml<Directory /var/www/vhosts/hogehoge.info/public_html > Options FollowSymLinks AllowOverride all</Directory>自定义日志“/var/log/httpd/hogehoge.info-access_log” 合并错误日志“/var/log/httpd/hogehoge.info-error_log”</VirtualHost>

添加完描述后,按 Esc 键退出编辑模式,然后按 :wq 保存并退出。
使用 cat 命令确认“ServerAlias”已正确添加,然后继续下一步。

② 在虚拟主机的“.htaccess”文件中写入

接下来,我们创建一个“.htaccess”文件。
首先,将其移动到“www.hogehoge.info”的文档根目录。

cd /var/www/vhosts/hogehoge.info/public_html

迁移完成后, public_html 下创建一个“.htaccess”文件

vi .htaccess

打开 vi 编辑器后,会出现一个空白的编辑界面,请添加以下代码。

RewriteEngine on RewriteCond %{HTTP_HOST} ^hogehoge\.info [NC] RewriteRule ^(.*)$ http://www.hogehoge.info/$1 [L,R=301]

让我们来看看这些术语分别是什么意思。

RewriteEngine 启用 URL 重写
RewriteCond %{HTTP_HOST} ^hogehoge\.info [NC] 定义条件,使表示 URL 主机名的变量 = hogehoge.info,无论大小写。
RewriteRule ^(.*)$ http://www.hogehoge.info/$1 [L,R=301] 定义一条规则,将满足上述条件的请求重写到 www.hogehoge.info,并以状态码 301 重定向它们。

嗯,这有点难。
我觉得这篇文章很容易理解。

URL规范化(使用mod_rewrite进行重定向)

编辑完成后,使用以下命令重新加载配置:

systemctl reload httpd

最后,尝试实际访问“hogehoge.info”,看看它是否会重定向到“www.hogehoge.info”。

以管理员权限打开记事本,并在“C:\windows\system32\drivers\etc\hosts”文件的末尾输入本地 IP 地址和主机名。别忘了保存!
如果不设置,访问“hogehoge.info”时将不会显示任何页面!以下是设置方法:

访问之后……

■ 访问日志 192.168.33.1 - - [2024年10月14日 08:22:03 +0000] "GET / HTTP/1.1" 301 233 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36"

我确认在 Chrome 浏览器中重定向到的确实是“www.hogehoge.info”,并且访问日志中发现

第二部分:我们来尝试使用 AWS ALB

在 AWS 环境中,似乎可以在数据到达服务器之前,在负载均衡器端设置重定向。

首先,打开 AWS 控制台,然后使用以下路径导航到设置屏幕。

EC2 > 负载均衡器 > 目标 ALB > 目标端口 > 在“监听器规则”部分,单击“添加规则”

完成迁移后,请按步骤 1 至 5 填写必填字段。

步骤 1:添加规则

这是规则名称和标签的设置界面。两者都可以留空。

步骤 2:定义规则条件

从“添加条件”中选择“规则条件类型”。此项用于设置转换源的访问权限。

主机头 这对应于
“https://hogehoge.info/test.txt ,所以这次我们将输入原始主机“hogehoge.info”
小路 “https://hogehoge.info /test.txt ”部分。
如果转换源是来自特定路径的访问,则必须指定该路径。
HTTP 请求方法 您可以指定 GET、POST 等方法。
源IP 您可以指定请求来自哪个 IP 地址。

步骤 3:定义规则操作

接下来,我们将设置转换目的地。

操作路由 选择“重定向到 URL”
重定向到 URL 选择 URI 部分
协议 选择任意协议。
在本例中,选择“HTTP”以在本地环境中进行验证。
港口 选择任意端口。
由于协议已选择为“HTTP”,请输入“80”。
使用自定义主机、路径、查询……. 我会检查一下
主持人 这对应于
“https://hogehoge.info/test.txt ,因此输入 www.hogehoge.info
小路 对应于
“https://hogehoge.info /test.txt 。在这种情况下,我们希望将其应用于“www.hogehoge.info”下的所有路径,因此输入 /*
查询(可选) 指的是
查询参数
“https://beyondjapan.com/?s=test&post_type=pt-blog 如有必要,请输入该参数。
状态码 通常情况下,301 重定向用于永久重定向,302 重定向用于因维护而导致的临时重定向。
在本例中,我们将假定为永久重定向,因此选择“301 - 永久重定向”。

步骤 4:设置规则优先级

设置重定向设置的优先级。当存在多个重定向设置时,优先级由一个数字指定,以表明哪个设置优先。
数字越小,优先级越高,0 为最高优先级。

由于这次我们只设置一个值,所以“1”就可以了。

设置时需要注意的事项:

除了上述设置之外,如果您想将“hogehoge.info”中的特定路径(例如,hogehoge.info/test.txt)重定向到另一个页面,请将此设置的优先级调高。

条件“hogehoge.info/test.txt”包含在现有条件“hogehoge.info/*”中,该条件使用了通配符,因此如果优先级不正确,重定向将无法正常工作。

优先级 1 "hogehoge.info/test.txt" → "某处"
优先级 2 "hogehoge.info/*" → "www.hogehoge.info/*"

让我们一起努力实现它!

步骤 5:回顾和创建

请检查您输入的信息是否正确,如果没有问题,请点击“创建”。

检查一下是否有效,如果确认重定向成功,那就没问题了!

再次提醒,请以管理员权限打开记事本,并记得将本地 IP 地址和主机名写入并保存到“C:\windows\system32\drivers\etc\hosts”文件的末尾!
另外,这次您还需要写入 ALB 的公网 IP 地址,我也会分享一下如何操作。

① 进入用于验证的 ALB 的详细信息屏幕,复制“DNS 名称”。

② 打开你的 WSL 或 Ubuntu,使用 dig 命令检查 IP 地址。

挖 hoge-test-alb-12345678.ap-northeast-1.elb.amazonaws.com
■执行结果;;答案部分:hoge-test-alb-12345678.ap-northeast-1.elb.amazonaws.com。60 在 12.345.678.90 ←此!

③ 复制 ANSWER SECTION 中显示的 IP 地址,并将其粘贴到 hosts 文件的底部,然后保存。

概括

以上是初学者设置重定向的方法。

我希望这篇文章能对初学者有所帮助……(祈祷)

如果您觉得这篇文章有用,请点击【点赞】!
6
加载中...
6票,平均分:1.00/16
752
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者