Nginx 重定向与 2 台不同机器上的 IP 行为不同
Nginx redirection different with IP behavior on 2 different machine
上下文
我有 2 台 Linux Red Hat 机器托管 nginx 服务器。 Nginx 服务器正在使用以下配置:
nginx 配置服务器 1
user1@server1:/etc/nginx/conf.d $ cat docgen_react.conf
server{
listen 80;
listen [::]:80;
server_name url1.com;
root /home/user1/gru/documentgenerator/react_client/build;
index index.html index.htm;
}
nginx 配置服务器 2
user2@server2:/etc/nginx/conf.d $ cat docgen_react.conf
server{
listen 80;
listen [::]:80;
server_name url2.com;
root /export/home/user2/gru/documentgenerator/react_client/build;
index index.html index.htm;
}
当前行为
- 如果我导航到 www.url1.com,它会正确指向我的网页
想要到达托管在服务器 1
- 如果我导航到 www.url2.com,
它正确指向我想要访问的托管在服务器 2
上的网页
- 如果我导航到 ip 服务器 1,它正确指向我的网页
想要访问服务器 1 上的主机(与 www.url1.com 相同)
- 如果我导航到 ip 服务器 2,我指向位于 /usr/share/doc/HTML/en-US/index 的网页。html(与 www.url2.com 不同)
预期行为
- 如果我导航到 www.url1.com,它会正确指向我的网页
想要到达托管在服务器 1
- 如果我导航到 www.url2.com,
它正确指向我想要访问的托管在服务器 2
上的网页
- 如果我导航到 ip 服务器 1,它正确指向我的网页
想要访问服务器 1 上的主机(与 www.url1.com 相同)
- 如果我导航到 ip 服务器 2,它正确指向我的网页
想要访问服务器 2 上的主机(与 www.url2.com 相同)
总而言之,如果我使用 IP 地址,我想到达与通过 www.url2.com
导航时相同的页面
感谢@ThanhNguyenVan 的评论,我找到了解决方案。
我只关注 /etc/nginx/conf.d,因为我不熟悉 nginx,所以我不知道上面有一个配置,即 /etc/nginx/nginx.conf。然后我比较了 server1 和 server2 配置,发现了差异。
评论下面的部分后,它很有魅力:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
上下文
我有 2 台 Linux Red Hat 机器托管 nginx 服务器。 Nginx 服务器正在使用以下配置:
nginx 配置服务器 1
user1@server1:/etc/nginx/conf.d $ cat docgen_react.conf
server{
listen 80;
listen [::]:80;
server_name url1.com;
root /home/user1/gru/documentgenerator/react_client/build;
index index.html index.htm;
}
nginx 配置服务器 2
user2@server2:/etc/nginx/conf.d $ cat docgen_react.conf
server{
listen 80;
listen [::]:80;
server_name url2.com;
root /export/home/user2/gru/documentgenerator/react_client/build;
index index.html index.htm;
}
当前行为
- 如果我导航到 www.url1.com,它会正确指向我的网页 想要到达托管在服务器 1
- 如果我导航到 www.url2.com, 它正确指向我想要访问的托管在服务器 2 上的网页
- 如果我导航到 ip 服务器 1,它正确指向我的网页 想要访问服务器 1 上的主机(与 www.url1.com 相同)
- 如果我导航到 ip 服务器 2,我指向位于 /usr/share/doc/HTML/en-US/index 的网页。html(与 www.url2.com 不同)
预期行为
- 如果我导航到 www.url1.com,它会正确指向我的网页 想要到达托管在服务器 1
- 如果我导航到 www.url2.com, 它正确指向我想要访问的托管在服务器 2 上的网页
- 如果我导航到 ip 服务器 1,它正确指向我的网页 想要访问服务器 1 上的主机(与 www.url1.com 相同)
- 如果我导航到 ip 服务器 2,它正确指向我的网页 想要访问服务器 2 上的主机(与 www.url2.com 相同)
总而言之,如果我使用 IP 地址,我想到达与通过 www.url2.com
导航时相同的页面感谢@ThanhNguyenVan 的评论,我找到了解决方案。
我只关注 /etc/nginx/conf.d,因为我不熟悉 nginx,所以我不知道上面有一个配置,即 /etc/nginx/nginx.conf。然后我比较了 server1 和 server2 配置,发现了差异。
评论下面的部分后,它很有魅力:
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
}
error_page 404 /404.html;
location = /40x.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}