我继承了一个apache Web服务器设置,另一个运行apache的VM只是充当防火墙。经过一些思考后,我了解了它的工作原理:
VM-webfirewall IP = xxx.xx.xx.xxx我们的外部IP地址 VM-web-server IP = 10.1.1.72我们内部的IP地址。
Webfirewall似乎正在运行apache,并具有一个/ etc / httpd / sites-enabled文件夹,其中包含我们内部每个网站的conf文件,例如:
weather.abc.com database.abc.com 全部来自我们的www.abc.com
现在它有两个conf文件,第二个始终以-ssl.conf结尾
下面是两个conf文件的示例:
flower.conf
<VirtualHost *:80>
ServerName flower.abc.com
ServerAlias flower
Redirect "/" "https://flower.abc.com
</VirtualHost>
然后
flower-ssl.conf
#xxx.xx.xxx.xxx is of course our outside IP address of this machine
<VirtualHost xxx.xx.xxx.xxx:443>
ServerName flower.abc.com
ServerAlias flower
ServerAdmin workers@abc.com
#DocumentRoot /dev/null
LimitRequestLine 200000
<If "%{HTTP_HOST} != 'flower.abc.com'">
Redirect "/" "https://flower.abc.com/"
</If>
Include extra/ssl-certs
ProxyRequests Off
ProxyPass / http://thedb.abc.com:8080/
ProxyPassReverse / http://thedb.abc.com:8080/
<Proxy *>
AuthType Basic
AuthName "Flower Protected Website"
AuthBasicProvider file
AuthUserFile /etc/httpd/htpasswd
Require user flowerdb
Order deny,allow
Allow from all
</Proxy>
</VirtualHost>
所以这些效果很好!该请求进入,如果您不在现场,则要求输入用户名和密码,然后它就会进入我们的花卉数据库并立即繁荣起来。
这是在我们的Web防火墙VM上,现在在实际的Web服务器VM上,还有另一个运行着类似/etc/httpd/sites-enabled
文件夹的apache。这也有一个conf文件:
002-flower.conf
#
# flower
#
<VirtualHost *:80>
ServerName flower.abc.com
ServerAlias flower
Redirect "/" "https://flower.abc.com/"
</VirtualHost>
<VirtualHost 10.1.1.72:443>
ServerName flower.abc.com
ServerAlias flower
<If "%{HTTP_HOST} != 'flower.abc.com'">
Redirect "/" "https://flower.abc.com/"
</If>
SSLOptions +StdEnvVars
Include extra/ssl-certs
Include /etc/letsencrypt/options-ssl-apache.conf
ProxyRequests Off
ProxyPass / http://thedb.abc.com:8080/
ProxyPassReverse / http://thedb.abc.com:8080/
</VirtualHost>
因此,如果您在现场,则可以转到flower.abc.com并启动该应用程序(这是一个基于烧瓶的应用程序,它本身在完整的VM上运行的nginx后面。10.10.1.152
的VM IP地址为该Web服务器本身的IP。
所有这一切都说明上面的方法非常有用!所以我想我会用我用Django编写的covid19小型跟踪应用程序来模仿它。
我在网络设置上安装了树莓派,并在NGINX后面运行了django uWSGI。这个树莓派有一个webserver2的dns条目,也可以很好地工作,当在我的工作网络上的站点上时,我可以转到:
covid19.abc.com,它运行正常。我也可以转到webserver2.abc.com:8080,它显示的很好。
当我不在站点(不在工作网络中)时,我得到了:
This site can’t be reached
covid19.abc.com’s server IP address could not be found.
Try running Windows Network Diagnostics.
DNS_PROBE_FINISHED_NXDOMAIN
如果我从网络防火墙(我认为应该首先出现请求)中查看,那么即使试图瞄准,也没有任何人在access_log中输入任何内容。我可以打其他类似weather.abc.com的文件,它会显示我的IP等中的条目。因此,对于任何对covid19.abc.com的请求,它甚至都没有进入网络防火墙的apache部分。网站。我不确定还有什么地方。
我的covid网站的webfirewall上的conf文件是: (如果您不在现场/网络,则不需要该身份验证部分,因此我没有添加它。)
site-covid19.conf
<VirtualHost *:80>
ServerName covid19.abc.com
ServerAlias covid19
Redirect "/" "https://covid19.abc.com/"
</VirtualHost>
site-covid19-ssl.conf
<VirtualHost xxx.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/
Include extra/ssl-certs
</VirtualHost>
然后在网络服务器上,配置为:
000-site-covid19.conf
<VirtualHost *:80>
ServerName covid19.abc.com
ServerAlias covid19
Redirect "/" "https://covid19.abc.com/"
</VirtualHost>
<VirtualHost 10.1.1.72:443>
ServerName covid19.abc.com
ServerAlias covid19
<If "%{HTTP_HOST} != 'covid19.abc.com'">
Redirect "/" "https://covid19.abc.com/"
</If>
SSLOptions +StdEnvVars
Include extra/ssl-certs
Include /etc/letsencrypt/options-ssl-apache.conf
ProxyRequests Off
ProxyPass / http://webserver2.abc.com:8080/
ProxyPassReverse / http://webserver2.abc.com:8080/
</VirtualHost>
尽管我再次从浏览器中收到该错误,但我知道要检查的唯一日志中没有任何错误(/ etc / httpd / access_log)是否还有其他地方可以查看或测试,甚至可以查看apache是否正在接收对covid19的请求.abc.com(在VPN上或在站点本身上运行时有效)仅在不在站点时有效。
(我意识到我正在索要证书,而且我知道,因为我还没有任何浏览器,应该只是吠叫我,我可以接受并继续前进...但是我想先完成“基本”部分)。我对接下来要尝试的内容一无所知。
因为我知道django应用程序正在运行并且正在运行,并且我还复制了另一个正在运行并正在运行的网站的配置,所以我迷失了为什么它根本无法运行。我希望我什至会误解为什么,但一无所获。我可以在两台服务器上为covid19复制grep日志文件,它永远不会显示出一个请求,甚至对此或其他任何请求都没有。