Apache:服务器配置拒绝客户端,我找不到错误

时间:2017-09-07 12:17:15

标签: apache ubuntu server

我在公司里接受了一个没有人知道的项目,它是一个遗留代码,而且不会知道我的错误。

此项目基于SilverStripe 3.1.12和AngularJS 1.XX

当我托盘为这个项目创建一个流浪汉机器时,我无法使用浏览器访问他,我总是接收

禁止

您无权访问此服务器上的内容。

并在日志中

[Thu Sep 07 11:44:49.485143 2017] [authz_core:error] [pid 29040:tid 140301297456896] [client 192.167.1.1:55872] AH01630:服务器配置拒绝客户端:/ vagrant /

apache .conf文件

<VirtualHost *:80>
    ServerName mysiteonline.dev
    DocumentRoot "/vagrant/"
    ErrorLog /home/ubuntu/mysite-error.log
    CustomLog /home/ubuntu/mysite-access.log combined
</VirtualHost>

proyect有2个.httaccess文件

 .
 ├── .httaccess (1)
 ├-- mysite-app 
    ├-- .httaccess (2)

fristone处理silverstripe部分,第二个处理角部分。

用于silverstripe的httacess:

DirectoryIndex index.php

# Deny access to templates (but allow from localhost)
<Files *.ss>
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1
</Files>

# Deny access to IIS configuration
<Files web.config>
    Order deny,allow
    Deny from all
</Files>

# Deny access to YAML configuration files which might include sensitive information
<Files *.yml>
    Order allow,deny
    Deny from all
</Files>

<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|json)$">
    Header set Cache-Control "max-age=31536000, public"
</FilesMatch>

# Route errors to static pages automatically generated by SilverStripe
ErrorDocument 404 /assets/error-404.html
ErrorDocument 500 /assets/error-500.html

<IfModule mod_rewrite.c>
    SetEnv HTTP_MOD_REWRITE On
    RewriteEngine On
    RewriteBase '/'

    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    RewriteRule ^nl/(game|category|info)/[0-9]*-(.*)$ https://mysitespelletjes.nl/$2 [NC,R=301,L]
    RewriteRule ^nl/(game|category|info)/*$ https://mysitespelletjes.nl/$1 [NC,R=301,L]
    RewriteRule ^nl/(.*)$ https://mysitespelletjes.nl/$1 [NC,R=301,L]
    RewriteRule ^nl$ https://mysitespelletjes.nl [NC,R=301,L]

    RewriteRule ^en/(game|category|info)/[0-9]*-(.*)$ https://mysiteonline.com/$2 [NC,R=301,L]
    RewriteRule ^en/(game|category|info)/*$ https://mysiteonline.com/$1 [NC,R=301,L]
    RewriteRule ^en/(.*)$ https://mysiteonline.com/$1 [NC,R=301,L]
    RewriteRule ^en$ https://mysiteonline.com [NC,R=301,L]

    RewriteCond %{REQUEST_URI} !(\.css|\.js)$ [NC]
    RewriteRule ^bower_components/(.*)$ mysite-app/bower_components/$1 [L]
    RewriteRule ^bower_components/(.*)\.(css) mysite-app/bower_components/$1.css [L,T=text/css]
    RewriteRule ^bower_components/(.*)\.(js) mysite-app/bower_components/$1.js [L,T=application/javascript]

    RewriteCond %{REQUEST_URI} !(\.css|\.js)$ [NC]
    RewriteRule ^app/(.*)$ mysite-app/app/$1 [L]
    RewriteRule ^app/(.*)\.(css)$ mysite-app/app/$1.css [L,T=text/css]
    RewriteRule ^app/(.*)\.(js)$ mysite-app/app/$1.js [L,T=application/javascript]

    RewriteCond %{REQUEST_URI} !(\.css|\.js)$ [NC]
    RewriteRule ^lib/(.*)$ mysite-app/lib/$1 [L]
    RewriteRule ^lib/(.*)\.(css)$ mysite-app/lib/$1.css [L,T=text/css]
    RewriteRule ^lib/(.*)\.(js)$ mysite-app/lib/$1.js [L,T=application/javascript]

    RewriteCond %{REQUEST_URI} !(\.css|\.js)$ [NC]
    RewriteRule ^dist/(.*)$ mysite-app/dist/$1 [L]
    RewriteRule ^dist/(.*)\.(css)$ mysite-app/dist/$1.css [L,T=text/css]
    RewriteRule ^dist/(.*)\.(js)$ mysite-app/dist/$1.js [L,T=application/javascript]

    RewriteRule ^terms(.*) / [L]

    RewriteRule ^vendor(/|$) - [F,L,NC]
    RewriteRule silverstripe-cache(/|$) - [F,L,NC]
    RewriteRule composer\.(json|lock) - [F,L,NC]

    RewriteRule ^lp($|/) - [L]

    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{DOCUMENT_ROOT}/framework/main.php !-f
    RewriteRule .* - [S=14] #If the above conditions fail skip all silverstripe routes.
    RewriteRule ^Security/(.*) framework/main.php?url=Security/$1 [QSA,L]
    RewriteRule ^admin(.*) framework/main.php?url=admin$1 [QSA,L]
    RewriteRule ^block-account/(.*)/ framework/main.php?url=block-account/$1 [QSA,L]
    RewriteRule ^affiliate/ framework/main.php?url=affiliate/ [QSA,L]
    RewriteRule ^mediatek-proxy/(.*) framework/main.php?url=mediatek-proxy/$1 [QSA,L]
    RewriteRule ^api/(.*) framework/main.php?url=api/$1 [QSA,L]
    RewriteRule ^registration-api/(.*) framework/main.php?url=registration-api/$1 [QSA,L]
    RewriteRule ^verify/(.*) framework/main.php?url=verify/$1 [QSA,L]
    RewriteRule ^forgotpassword/(.*) framework/main.php?url=forgotpassword/$1 [QSA,L]
    RewriteRule ^adyen(.*) framework/main.php?url=adyen/$1 [QSA,L]
    RewriteRule ^providers/(.*) framework/main.php?url=providers/$1 [QSA,L]
    RewriteRule ^incompatible-browsers framework/main.php?url=incompatible-browsers/ [QSA,L]
    RewriteRule ^sitemap-generator framework/main.php?url=sitemap.xml [QSA,L]
    RewriteRule ^dev(.*) framework/main.php?url=dev/$1 [QSA,L]

    #IMAGES
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule ^image/(.*)\.png$ framework/main.php?url=image/$1 [QSA,L]

    #PRERENDER
    RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
    RewriteCond %{QUERY_STRING} _escaped_fragment_
    RewriteCond %{QUERY_STRING} !url
    RewriteCond %{REQUEST_URI} !^/image
    RewriteRule ^(?!.*?(\.woff|\.ttf|\.svg|\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent))(index\.php)?(.*) mysite-app/$3?_escaped_fragment_= [L]

    #SITEMAP.xml
    RewriteRule ^(.*)sitemap.xml mysite-app/sitemap.xml [L]

    #MYSITE-APP pass through
    RewriteCond %{REQUEST_URI} ^(.*)$
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule .* mysite-app/ [L]
</IfModule>

对于Angular部分

DirectoryIndex index.php

<IfModule mod_headers.c>
    # Change YOUR_TOKEN to your prerender token and uncomment that line if you want to cache urls and view crawl stats
    RequestHeader set X-Prerender-Token "LH4zvWkRZ0oGgbIgoAuw"
</IfModule>

<IfModule mod_rewrite.c>
    SetEnv HTTP_MOD_REWRITE On
    RewriteEngine On
    RewriteBase '/'

    RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC]
    RewriteRule ^(.*)$ http://%1/$1 [R=301,L]

    # With the below proxy we achieve that sitemap.xml is proxied through our main server. And that the main server is informed from which URL the request was made
    # This always the main server to server the sitemap.xml based on that domain.
    # RewriteRule ^(.*)sitemap.xml http://mysite.local/sitemap-generator/?referrer=%{HTTP_HOST}/$1 [P,L]
    <IfModule mod_proxy_http.c>
        RewriteRule ^(.*)sitemap.xml https://mysiteonline.com/sitemap-generator/?referrer=%{HTTP_HOST}/$1 [P,L]
        #RewriteRule ^(.*)sitemap.xml http://mysite.local/sitemap-generator/?referrer=%{HTTP_HOST}/$1 [P,L]
    </IfModule>

    # Prerender IO configuration
    # Change the below url to the http://service.prerender.io/ server for staging + live else point it to http://localhost:3000/ DO NOT FORGET THE TRAILING SLASH!!!
    # LIVE = http://service.prerender.io/
    # DEV = http://localhost:3000/ MAKE SURE TO DISABLE AUTH!!
    <IfModule mod_proxy_http.c>
        RewriteCond %{HTTP_USER_AGENT} baiduspider|facebookexternalhit|twitterbot|rogerbot|linkedinbot|embedly|quora\ link\ preview|showyoubot|outbrain|pinterest|slackbot|vkShare|W3C_Validator [NC,OR]
        RewriteCond %{QUERY_STRING} _escaped_fragment_
        RewriteCond %{QUERY_STRING} !url
        RewriteCond %{REQUEST_URI} !^/image
        RewriteRule ^(?!.*?(\.woff|\.ttf|\.svg|\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent))(index\.php)?(.*) https://service.prerender.io/https://%{HTTP_HOST}/$3 [P,L]
        #RewriteRule ^(?!.*?(\.woff|\.ttf|\.svg|\.js|\.css|\.xml|\.less|\.png|\.jpg|\.jpeg|\.gif|\.pdf|\.doc|\.txt|\.ico|\.rss|\.zip|\.mp3|\.rar|\.exe|\.wmv|\.doc|\.avi|\.ppt|\.mpg|\.mpeg|\.tif|\.wav|\.mov|\.psd|\.ai|\.xls|\.mp4|\.m4a|\.swf|\.dat|\.dmg|\.iso|\.flv|\.m4v|\.torrent))(index\.php)?(.*) http://localhost:3000/http://%{HTTP_HOST}/$3 [P,L]
    </IfModule>
</IfModule>

我有2天的战斗,我无法找到解决方案,因为......我一直都在这里:

禁止

您无权访问/在此服务器上。

1 个答案:

答案 0 :(得分:0)

你仍在使用旧的Apache 2.2语法,它在Apache 2.4中不再起作用(我假设你正在使用它)。

Order deny,allow
Deny from all
Allow from 127.0.0.1

不再工作了。

您必须添加“需要”行:

Require local

有关如何升级允许来自/拒绝条款的完整文档,请参阅此文档:

documentation