无法通过外部工作网络通过apache反向代理连接到我的网站

时间:2020-11-03 20:27:47

标签: django apache nginx

我继承了一个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日志文件,它永远不会显示出一个请求,甚至对此或其他任何请求都没有。

0 个答案:

没有答案