我目前正在尝试使用 Nginx 和 ExpressJS 设置一个 Web 服务器。目前,当我在地址栏中输入 123.456.789.999 时它会工作,并且它会加载,但是我试图正确地从 123.456.789.999 重定向到 example.com。我尝试添加一个侦听端口 80 的服务器块,并将其永久移动到第二个服务器块中的 example.com。但每当我在地址栏中输入 example.com 时,它都不会加载。
在我的域管理器中,我设置了以下内容
| Record | Name | Value | TTL |
|------------|------|-----------------|-------|
| A | @ | 123.456.789.999 | 1 Day |
| CNAME | www | @ | 1 Hour|
其余均为默认值。
server {
listen 80;
listen [::]:80 default_server;
root /var/www/html/;
index index.html index.htm;
server_name example.com www.example.com;
location / {
}
}
server {
listen 80;
server_name 123.456.789.999;
return 301 $scheme://example.com$request_uri;
}
在 Web 应用程序前面使用 NGINX 作为反向代理是一种非常常见的用途,是的。首先你应该了解一些基础知识。
您的服务的用户知道域
example.com
。您的 Web/代理/应用程序服务器 IP 地址需要使用 DNS 链接到域。这一步(看起来)已经完成了。干得好。
假设您正在使用nodeJS/express来运行一个应用程序,侦听
3000
上的端口localhost
,并且您希望将其作为example.com
的主要应用程序。
#Define an upstream block for your service.
upstream my-backend {
server 127.0.0.1:3000;
}
#Define your main server configuration
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://my-backend;
proxy_set_header Host $host;
}
}
请参阅以下参考:https://docs.nginx.com/nginx/admin-guide/web-server/reverse-proxy/
了解 NGINX 配置语法以及如何组织配置以充分利用它非常重要。我有一个关于它的视频。 https://youtu.be/nhSYFL1tufM
这个线程看起来有点旧(2年多了),但我昨天在自己处理类似的问题时遇到了它。这对我有用;
#nginx.conf:
server {
listen 80;
listen 443 ssl;
server_name www.example.com;
# redirect requests that doesn't include the server_name (i.e. made for the IP address) to it;
if ($host != $server_name) {
return 301 $scheme://$server_name$request_uri;
}
}