首页 > 解决方案 > 关于 Apache httpd.conf 和应用服务器 aaa.conf 端口 80 和 443

问题描述

这个问题是关于 httpd.conf 和 aaa.conf 文件配置的。

 Listen 443
 <VirtualHost  aaa.xyz.com:80>
 ServerName ------.xyz.com
 DocumentRoot "--------------"

httpd.conf

<VirtualHost  aaa.xyz.com:443>
ServerName    aaa.xyz.com
ServerAlias   aaa
------------------------------------
Proxy Pass   // aaa.xyz.com:1000/fff
Proxy Reverse // aaa.xyz.com:1000/fff

aaa.conf

请问80和443这两个端口是指什么?是不是当客户端请求网页时,请求被发送到 httpd.conf 的 443 端口。它从那里监听,然后转到 aaa.conf 以查找请求的网页。如果网页存在,则将其提取出来并发送到 httpd.conf 的 80 端口。那么,80端口上的请求被发送到客户端,然后显示在客户端的浏览器上?

我的理解正确吗?

标签: apacheapp-confighttpd.conf

解决方案


不完全的。首先,该配置有很多问题。让我们先解决这个问题:

Listen 80
<VirtualHost *:80>
    ServerName www.example.com
    ServerAlias example.com

    DebugLevel error
    ErrorLog "logs/80_error_log"
    AccessLog "logs/80_access_log" combined

    DocumentRoot "/SOMEDIRECTORY"
</VirtualHost>

Listen 443
<VirtualHost *:443>
    ServerName www.example.com
    ServerAlias example.com

    DebugLevel error
    ErrorLog "logs/443_error_log"
    AccessLog "logs/443_access_log" combined

    # SSL CERTIFICATES CONFIGURATION HERE

    ProxyPass        "/" "http://aaa.xyz.com:1000/fff"
    ProxyPassReverse "/" "http://aaa.zyx.com:1000/fff"
</VirtualHost>

这假设您已经加载了模块:

  • mod_proxy
  • mod_proxy_http
  • mod_ssl

关于端口

端口用于打开与服务器的连接,然后与它通信。您与它的对话方式必须在客户端和服务器之间匹配。决定用80端口做http,用443端口做https。如果您向这些端口发送一些其他流量,Apache 将不知道如何处理它,因为它期待 HTTP(s) 请求。

客户前往http://www.example.comhttp://example.com

使用第一个 VirtualHost,因为域和端口匹配(http 端口默认为 80)。请求的网页取自DocumentRoot目录。

客户前往https://www.example.comhttps://example.com

使用第二个 VirtualHost,因为域和端口匹配(https 端口默认为 443)。

然后代理配置:

  • Apache“成为客户端”并将请求发送到http://aaa.xyz.com:1000/fff并等待响应,就像浏览器所做的那样。
  • 当 Apache 收到响应时,它会删除aaa.xyz.com答案文件中对的引用并将其发送到客户端的浏览器。
  • 本质上,Apache 隐藏aaa.xyz.com了 ,所以从客户端的浏览器的角度来看,所有的请求仍然去往 - 和来自 - www.example.com

我建议你阅读https://www.guru99.com/apache.html然后 http://httpd.apache.org/docs/2.4/mod/mod_proxy.html


推荐阅读