Nginx 配置文件

Nginx 配置文件

这个问题不是用于商业用途 - 这是用于个人用途。这是我的情况。我运行带有域的 Windows Server 2012 R2。我现在正在添加在 Raspberry Pi 上运行的 Home Assistant(并运行 Raspbian)。

我退休了,所以我们会经常出差。因此,我希望当我们不在家时能够登录 Home Assistant 来监控事情。我在 Amazon Route 53 上注册了自己的域名,并对其进行了设置,以便它跟踪我的外部 IP 地址,就像 DuckDNS 等 DDNS 程序所做的那样。我最初在路由器上设置了端口转发,将端口 443 转发到 Pi,一切正常,所以我知道到目前为止一切都设置正确。

不幸的是,我还有一些其他程序需要 https 访问,所以我不能只是将它设置为在路由器上进行端口转发。

话虽如此,我现在正尝试在 Windows Server 上设置 Nginx。我已经完成了,并将其设置为作为服务运行。但我遇到了两个问题:

  1. 我无法启动它,因为它现在是一个服务。它一直给出错误 1067,我认为这意味着 nginx.conf 文件有问题。但我不确定文件是否真的有问题,或者它是否找不到它,因为我没有正确设置路径让服务知道文件的位置。那么我该如何正确完成呢?

  2. 然后第二个问题是,nginx.conf 文件是什么样的,才能让 Windows 服务器监听端口 443,如果它看到对我的 Home Assistant 域的调用,它会转发到 Raspberry Pi,否则它只是让 443 流量继续传输到试图在端口 443 上传递流量的 PC?

我希望这一切都说得通,而且我已经正确解释了一切。我进入了对我来说是新领域的领域,我有点不知道下一步该做什么。

答案1

我不太熟悉在 Windows 服务器上运行 NGINX,但这里有一些有用的提示。

  1. NGINX 是非常它的配置文件非常特别,只要配置文件中有一个拼写错误,它就会公然拒绝启动。所以你的错误可能是它找不到配置文件,或者是文件有问题。

  2. 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,因为您需要配置所有证书设置才能使其工作。

  1. 您要设置的是反向代理,也就是说,如果某个东西调用了某个特定域,例如 homeassistant.mydomain.com,NGINX 会将流量传递到另一台服务器。这在商业领域非常常见,也是 NGINX 特别擅长的应用之一。

相关内容