Linux

使用 apache 僅使用 IP 地址處理 http 和 https 流量

  • October 10, 2016

我在 ubuntu 16.04 上設置了 apache2.4.1 來處理埠 80 和 443 上的 http 和 https 流量。我可以毫無問題地瀏覽這兩個站點。

伺服器可以通過公共 ip 和私有 ip 訪問——遠端 api 服務使用它通過 vpn 將流量發送到我的伺服器。

這是我的 apachectl -S 結果

*:80                   APPSERVER.example.com (/etc/apache2/sites-enabled/000-default.conf:1)          
*:443                  is a NameVirtualHost                                                                     
    default server APPSERVER.example.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2)     
    port 443 namevhost APPSERVER.example.com (/etc/apache2/sites-enabled/000-default-ssl.conf:2) 
    port 443 namevhost APPSERVER.example.com (/etc/apache2/sites-   enabled/default-ssl.conf:2)     
ServerRoot: "/etc/apache2"                                                                                      
Main DocumentRoot: "/var/www/html"                                                                              
Main ErrorLog: "/var/log/apache2/error.log"                                                                     
Mutex rewrite-map: using_defaults                                                                               
Mutex ssl-stapling-refresh: using_defaults                                                                      
Mutex ssl-stapling: using_defaults                                                                              
Mutex ssl-cache: using_defaults                                                                                 
Mutex default: dir="/var/lock/apache2" mechanism=fcntl                                                          
Mutex mpm-accept: using_defaults                                                                                
Mutex watchdog-callback: using_defaults                                                                         
PidFile: "/var/run/apache2/apache2.pid"                                                                         
Define: DUMP_VHOSTS                                                                                             
Define: DUMP_RUN_CFG                                                                                            
User: name="www-data" id=33                                                                                     
Group: name="www-data" id=33

這是我的 000-default.conf

<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
<Directory /var/www>
   Options Indexes FollowSymLinks MultiViews
   AllowOverride All
</Directory>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

這是 000-default-ssl.conf

<IfModule mod_ssl.c>
 <VirtualHost *:443>
   ServerAdmin webmaster@localhost

   DocumentRoot /var/www/html
   <Directory /var/www>
       Options Indexes FollowSymLinks MultiViews
       AllowOverride All
   </Directory>

   ErrorLog ${APACHE_LOG_DIR}/error.log
   CustomLog ${APACHE_LOG_DIR}/access.log combined
   SSLEngine on

   SSLCertificateFile  /etc/apache2/ssl/certificate_bundle.cer
   SSLCertificateKeyFile /etc/apache2/ssl/appserver.key

   SSLCertificateChainFile /etc/apache2/ssl/intermediateCA.cer

   <FilesMatch "\.(cgi|shtml|phtml|php)$">
           SSLOptions +StdEnvVars
   </FilesMatch>
   <Directory /usr/lib/cgi-bin>
           SSLOptions +StdEnvVars
   </Directory>

</VirtualHost>
</IfModule>

問題是,當遠端 api 服務嘗試使用 https 發送 xml 發布請求時,我的日誌文件中出現了臭名昭著的 “\x16\x03\x01” 400 0 “-” “-"。

誰能指出我的配置可能做錯了什麼導致此錯誤。

我在您的配置中看不到任何會導致這種情況的東西。問題是客戶端正在向您的 HTTPS 虛擬主機發送 HTTP 。

這可能是由於在您的配置或應用程序中重定向到 ` http://example.com:443/ ’ 引起的,但其他情況不大。我在您的配置中看不到任何會導致這種情況的東西。從您到目前為止向我們展示的內容來看,問題很可能出在遠端服務上。

編輯:更正,正如下面@dave_thompson_085 所指出的,我把這個弄錯了。客戶端正在向 HTTP 虛擬主機發送 HTTPS。

引用自:https://serverfault.com/questions/807120