403 errors for images only on newly added ServerAlias

时间:2016-10-20 13:08:04

标签: apache http-status-code-403

I have had two webservers running on the same machine with addresses like the following:

internal.myservername.com

and

test.myservername.com

The test site is (on some pages) pulling images from the internal site, and works flawlessly. Now that we are out of testing, I wanted to add/change the test domain to be the main site, so I added the apache server alias of myservername.com to the test site, but although all pages work, any images from internal will not show up on that address, resulting in a 403 error:

[access_compat:error] AH01797: client denied by server configuration

I have also tried setting up myservername.com as its own domain, and also tried making it the primary name on the test site (with test being an alias). In all cases, test.myservername.com continues to work fine and display images correctly, whereas myservername.com will not (resulting in all the 403 errors for these embedded images).

I have checked all configs and find nothing amiss. And there is nothing in my .htaccess files or conf files that is specific to "test". I am stumped.

I should probably also mention that I am running on a Mac OS Sierra server. (Server version: Apache/2.4.23 (Unix))

UPDATE WITH REQUESTED DETAIL:

  1. img tags: there is nothing special in the image tags, they are called using the full url, ie

<img src="http://internal.myservername.com/images/imagename.jpg" />

I should also add that if I take the exact src url and paste it alone into a browser, the image WILL load. It is only embedded in the page that it will refuse to load. (and only on the main domain, test works fine embedded in img tag)

  1. And the setup of test/main conf is:

    <VirtualHost 127.0.0.1:34580>
    ServerName http://test.myservername.com:80
    ServerAdmin admin@example.com
    DocumentRoot "/Library/Server/Web/Data/Sites/myservername.com/plugins/mywebsite"
    DirectoryIndex index.php home.php index.html
    CustomLog /var/log/apache2/access_log combinedvhost
    ErrorLog /var/log/apache2/error_log
    <IfModule mod_ssl.c>
        SSLEngine Off
        SSLCipherSuite "HIGH:MEDIUM:!MD5:!RC4:!3DES"
        SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
        SSLProxyEngine Off
        SSLProxyProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2
    </IfModule>
    <IfModule mod_secure_transport.c>
        MSTEngine Off
        MSTCipherSuite HIGH, MEDIUM
        MSTProtocolRange TLSv1.2 TLSv1.2
        MSTProxyEngine On
        MSTProxyProtocolRange TLSv1.2 TLSv1.2
    </IfModule>
    <Directory "/Library/Server/Web/Data/Sites/myservername.com/plugins/mywebsite">
        Options All -Indexes +ExecCGI +Includes +MultiViews
        AllowOverride All
        <IfModule mod_dav.c>
            DAV Off
        </IfModule>
        <IfDefine !WEBSERVICE_ON>
            Require all denied
            ErrorDocument 403 /customerror/websitesoff403.html
        </IfDefine>
    </Directory>
    ServerAlias myservername.com
    

  2. And the conf for internal:

    <VirtualHost 127.0.0.1:34580> ServerName http://internal.myservername.com:80 ServerAdmin admin@example.com DocumentRoot "/Library/Server/Web/Data/Sites/myservername.com" DirectoryIndex index.php CustomLog /var/log/apache2/access_log combinedvhost ErrorLog /var/log/apache2/error_log <IfModule mod_ssl.c> SSLEngine Off SSLCipherSuite "HIGH:MEDIUM:!MD5:!RC4:!3DES" SSLProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2 SSLProxyEngine Off SSLProxyProtocol -all +TLSv1 +TLSv1.1 +TLSv1.2 </IfModule> <IfModule mod_secure_transport.c> MSTEngine Off MSTCipherSuite HIGH, MEDIUM MSTProtocolRange TLSv1.2 TLSv1.2 MSTProxyEngine On MSTProxyProtocolRange TLSv1.2 TLSv1.2 </IfModule> <IfModule mod_headers.c> <filesmatch "^.*www.*\.jpg$"> Header set Cache-Control "max-age=2678400, public" </filesmatch> </IfModule> <Directory "/Library/Server/Web/Data/Sites/myservername.com"> Options All -Indexes +ExecCGI +Includes +MultiViews AllowOverride All Require all granted <IfModule mod_dav.c> DAV Off </IfModule> <IfDefine !WEBSERVICE_ON> Require all denied ErrorDocument 403 /customerror/websitesoff403.html </IfDefine> </Directory> </VirtualHost>

1 个答案:

答案 0 :(得分:0)

嗯,我只知道造成这种情况的原因,以下是我采取的步骤:

  1. 因为我的错误发生在mod_access_compat中,所以我关闭了该模块以查看是否有任何更改

  2. 这导致了一条更加清晰的error_log消息,指出内部网站上我的images文件夹中的.htaccess文件存在问题(由其他人设置,我不知道存在错误直到错误向我展示了)

  3. 该.htaccess文件包含允许我的测试网站提取图像的指令,但不包括新域,因此一旦我将其添加到文件中,所有内容都已修复。

  4. 对于那些想知道指令是什么的人:

    SetEnvIfNoCase Referer "^http://test.myservername.com/" locally_linked=1
    SetEnvIfNoCase Referer "^http://test.myservername.com$" locally_linked=1
    SetEnvIfNoCase Referer "^http://internal.myservername.com/" locally_linked=1
    SetEnvIfNoCase Referer "^http://internal.myservername.com$" locally_linked=1
    SetEnvIfNoCase Referer "^$" locally_linked=1
    <FilesMatch "\.(gif|png|jpe?g)$">
      Order Allow,Deny
      Allow from env=locally_linked
    </FilesMatch>
    

    通过添加以下两行,现在可以使用:

    SetEnvIfNoCase Referer "^http://myservername.com/" locally_linked=1
    SetEnvIfNoCase Referer "^http://myservername.com$" locally_linked=1