linux - Nginx 位置重写规则在 ELB 后面不起作用
问题描述
我在 App Load Balancer 后面有 2 个 ec2 实例,它们根据路径将流量重新路由到所需的实例:
- www.example.com/hello => 实例 1
- www.example.com/goodbye => 实例 2
Nginx 服务器配置
# Hello server config
server {
listen 80;
server_name localhost;
location / {
root /home/ubuntu/welcome;
}
location = /hello {
root /home/ubuntu/api;
}
# Goodbye server config
server {
listen 80;
server_name localhost;
location / {
root /home/ubuntu/welcome;
}
location = /goodbye {
root /home/ubuntu/api;
}
我在配置文件中指定的根文件夹下的每个服务器中创建了一个简单的 index.html 文件,以便 instance1 返回“Hello”,instance2 返回“Goodbye”。但是 www.example.com/hello 和 www.example.com/goodbye 总是返回 404 not found。我确实重新加载了我的 Nginx 服务,甚至重新启动。
PS:为了测试,我创建了另一个实例,其中 Nginx 没有隐藏在 ELB 后面,并编辑了配置以使其看起来相似,它似乎可以工作,所以我不确定 ELB 后面的那些我做错了什么。
解决方案
设法通过将根移到位置括号之外并更新我的文件夹名称以匹配位置名称来解决此问题,并且它可以工作。所以现在看起来像这样。
server {
listen 80;
server_name localhost;
root /home/ubuntu/api;
location / {
}
location = /hello {
}
}
你好源代码的路径是/home/ubuntu/api/hello/
再见源代码的路径 => /home/ubuntu/api/goodbye/
推荐阅读
- html - 在按钮后面绘制一个矩形会使按钮不起作用(CSS)
- ef-core-5.0 - 在 EF Core 5 中映射 SQL 视图 - SaveChanges
- r - dplyr mutate cross 创建一个新列并修改数据中的所有列
- apache-spark - 如何使用 jdbc spark 连接器创建带有主键的表(点燃)
- c++ - 如何在 Visual Studio 代码 MinGW 项目中包含谷歌测试
- html - 在 HTML 中提交表单时收到错误
- python - 除非我保存它并从磁盘读取,否则无法读取 jsonl 字符串
- reactjs - 如何理解这个有条件地显示标记的 React 代码?
- javascript - 有没有办法在旋转后更新本地图像的 URI 链接?
- algorithm - 具有设定权重的有向加权图中的最短路径