我不确定我继承的设置的名称是什么,但它的工作原理如下:
运行centos和apache的VM(网络防火墙)具有配置,并正在运行以拦截来自外界的所有流量,之后,根据浏览器的要求,它将流量传输到我们的Web服务器(服务我们大多数的网站)或其他为自己提供不同网站服务的机器。
我正在尝试添加一台新机器来服务于我们的covid联系人跟踪。我创建了一个raspberry pi 4(确实需要测试),并运行了django,uswgi和nginx。将上述设备添加到我们的DNS中获取IP地址,然后繁荣使它在本地运行,如果我在工作网络中,则可以通过以下任一方式访问该站点:
covid19.abc.com,因为它是在我们的网络防火墙VM上的apache中定义的,或者我甚至可以直接通过以下网址访问该网站:
webserver2.abc.com:8080是运行DNS条目中的实际计算机。
问题是,如果我不在我的工作网络中,则covid19.abc.com会显示错误消息“ DNS_PROBE_FINISHED_NXDOMAIN”,而且我什至在防火墙上的apache访问日志中都看不到有人在向它发出请求(注意covid19会显示在访问日志中)。
我在启用了etc / httpd / sites-enabled的网络防火墙上执行了以下操作。添加了两个conf文件:
site-covid19.conf
<VirtualHost *:80>
ServerName covid19.abc.com
ServerAlias covid19
Redirect "/" "https://covid19.abc.com/"
</VirtualHost>
site-covid19-ssl.conf (ip 1xx is our external IP address, it is the ip address of the web-firewall vm)
<VirtualHost 1xx.xx.xxx.xxx:443>
ServerName covid19.abc.com
ServerAlias covid19
<If "%{HTTP_HOST} != 'covid19.abc.com'">
Redirect "/" "https://covid19.abc.com/"
</If>
ProxyRequests Off
ProxyPass / http://webserver2.abc.com:8080/
ProxyPassReverse / http://webserver2.abc.com:8080/
<Proxy *>
Order deny,allow
Allow from all
</Proxy>
Include extra/ssl-certs
</VirtualHost>
现在我没有该新站点的证书,我知道...我以为我至少可以连接到该站点,然后查看所有缺少证书错误的证书,但不只是DNS_PROBE_FINISHED_NXDOMAIN。
abc.com指向上面的1xx.xx.xxx.xxx IP地址,它是该网络防火墙的IP地址。因此,我假设它位于所有内容的外部,拦截所有443和80的流量,并根据每个conf文件中的规则将其集中到其他位置。
webserver2是一台简单的树莓派4机器,我设置为在nginx和uWSGI下运行该django。它已经启动并运行,我也可以在我们的网络上本地访问它,因为上面提到的cosd19.abc.com或webserver2.abc.com:8080表示的URL非常有效。
只是从外界看到它。我检查了我们的工作路由器/防火墙设备,没有任何规则,似乎让所有443或80流量都通过了1xx.xx.xxx.xxx
因此,不确定在添加启用了站点的conf文件后,我还做了sudo apachectl restart
的尝试,但除了apachectl -S似乎没有任何其他作用,它似乎什么也没做:
VirtualHost configuration:
1xx.xxx.xx.xxx:443 is a NameVirtualHost
default server arc.abc.com (/etc/httpd/sites-enabled/arc-arc-ssl.conf:4)
port 443 namevhost arc.abc.com (/etc/httpd/sites-enabled/arc-arc-ssl.conf:4)
alias arc
port 443 namevhost covid19.abc.com (/etc/httpd/sites-enabled/site-covid19-ssl.conf:1)
alias covid19
port 443 namevhost www.abc.com (/etc/httpd/sites-enabled/site-www-ssl.conf:4)
alias www
alias apo.nmsu.edu
*:80 is a NameVirtualHost
port 80 namevhost arc.abc.com (/etc/httpd/sites-enabled/arc-arc.conf:4)
alias arc
port 80 namevhost covid19.abc.com (/etc/httpd/sites-enabled/site-covid19.conf:1)
alias covid19
port 80 namevhost web-firewall.abc.com (/etc/httpd/sites-enabled/site-web-firewall.conf:6)
alias web-firewall
alias web-firewall-users
alias web-firewall-users.abc.com
port 80 namevhost www.abc.com (/etc/httpd/sites-enabled/site-www.conf:5)
alias www
alias abc.com
ServerRoot: "/etc/httpd"
Main DocumentRoot: "/var/www/html"
Main ErrorLog: "| /usr/bin/logger -t httpd -i -p local4.error"
Mutex authn-socache: using_defaults
Mutex ssl-cache: using_defaults
Mutex default: dir="/run/httpd/" mechanism=default
Mutex mpm-accept: using_defaults
Mutex fcgid-pipe: using_defaults
Mutex authdigest-opaque: using_defaults
Mutex proxy-balancer-shm: using_defaults
Mutex rewrite-map: using_defaults
Mutex authdigest-client: using_defaults
Mutex fcgid-proctbl: using_defaults
Mutex ssl-stapling: using_defaults
Mutex proxy: using_defaults
PidFile: "/etc/httpd/run/httpd.pid"
Define: _RH_HAS_HTTPPROTOCOLOPTIONS
Define: DUMP_VHOSTS
Define: DUMP_RUN_CFG
Define: MODSEC_2.5
Define: MODSEC_2.9
User: name="apache" id=48
Group: name="apache" id=48
对我来说,一切设置正确。我从另一个拥有我们网站的网站上获取了:petdb.abc.com,它是通过类似方式设置的。它是自己的机器,通过wsgi和nginx为Flask应用程序提供服务。只是可以在异地看到一个,而我尝试设置的却不能。