这个问题不是用于商业用途 - 这是用于个人用途。这是我的情况。我运行带有域的 Windows Server 2012 R2。我现在正在添加在 Raspberry Pi 上运行的 Home Assistant(并运行 Raspbian)。
我退休了,所以我们会经常出差。因此,我希望当我们不在家时能够登录 Home Assistant 来监控事情。我在 Amazon Route 53 上注册了自己的域名,并对其进行了设置,以便它跟踪我的外部 IP 地址,就像 DuckDNS 等 DDNS 程序所做的那样。我最初在路由器上设置了端口转发,将端口 443 转发到 Pi,一切正常,所以我知道到目前为止一切都设置正确。
不幸的是,我还有一些其他程序需要 https 访问,所以我不能只是将它设置为在路由器上进行端口转发。
话虽如此,我现在正尝试在 Windows Server 上设置 Nginx。我已经完成了,并将其设置为作为服务运行。但我遇到了两个问题:
我无法启动它,因为它现在是一个服务。它一直给出错误 1067,我认为这意味着 nginx.conf 文件有问题。但我不确定文件是否真的有问题,或者它是否找不到它,因为我没有正确设置路径让服务知道文件的位置。那么我该如何正确完成呢?
然后第二个问题是,nginx.conf 文件是什么样的,才能让 Windows 服务器监听端口 443,如果它看到对我的 Home Assistant 域的调用,它会转发到 Raspberry Pi,否则它只是让 443 流量继续传输到试图在端口 443 上传递流量的 PC?
我希望这一切都说得通,而且我已经正确解释了一切。我进入了对我来说是新领域的领域,我有点不知道下一步该做什么。
答案1
我不太熟悉在 Windows 服务器上运行 NGINX,但这里有一些有用的提示。
NGINX 是非常它的配置文件非常特别,只要配置文件中有一个拼写错误,它就会公然拒绝启动。所以你的错误可能是它找不到配置文件,或者是文件有问题。
NGINX(至少在 Linux 上)使用嵌套配置文件,这样您就不必费力地
nginx.conf
浏览庞大的文件。
因此,你需要在与应用程序nginx.conf
相同的目录中设置一个文件nginx.exe
它应该包含类似这样的内容
worker_processes 1;
events {
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
#to read external configuration.
include "C:/nginx/conf/sites-enabled/*.conf";
}
注意最后一行的语句include
。它告诉 NGINX 将该子目录中的所有配置文件包含在其主配置文件中。
因此,在该子目录中,创建一个新的配置文件,例如mydomain.conf
它应该包含如下内容:
server {
listen 80;
server_name mydomain.com;
location / {
root html;
index index.html index.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
我建议您先让它工作,然后再尝试配置它以监听端口 443 上的 HTTPS,因为您需要配置所有证书设置才能使其工作。
- 您要设置的是反向代理,也就是说,如果某个东西调用了某个特定域,例如 homeassistant.mydomain.com,NGINX 会将流量传递到另一台服务器。这在商业领域非常常见,也是 NGINX 特别擅长的应用之一。