mirror of https://github.com/flarum/flarum
Added shared versions of files (companion PR)
parent
542331b6b4
commit
9c57ee9a84
|
@ -0,0 +1,88 @@
|
|||
# Pass requests that don't refer directly to files in the filesystem to index.php
|
||||
location / {
|
||||
try_files $uri $uri/ /index.php?$query_string;
|
||||
}
|
||||
|
||||
# Forbidden Paths
|
||||
location ~* \.git {
|
||||
return 403;
|
||||
}
|
||||
|
||||
location ~* composer\.(lock|json)$ {
|
||||
return 403;
|
||||
}
|
||||
|
||||
location ~* config.php {
|
||||
return 403;
|
||||
}
|
||||
|
||||
location ~* flarum {
|
||||
return 403;
|
||||
}
|
||||
|
||||
location ~* storage/(.*)? {
|
||||
return 403;
|
||||
}
|
||||
|
||||
location ~* vendor/(.*)? {
|
||||
return 403;
|
||||
}
|
||||
|
||||
# The following directives are based on best practices from H5BP Nginx Server Configs
|
||||
# https://github.com/h5bp/server-configs-nginx
|
||||
|
||||
# Expire rules for static content
|
||||
location ~* \.(?:manifest|appcache|html?|xml|json)$ {
|
||||
add_header Cache-Control "max-age=0";
|
||||
}
|
||||
|
||||
location ~* \.(?:rss|atom)$ {
|
||||
add_header Cache-Control "max-age=3600";
|
||||
}
|
||||
|
||||
location ~* \.(?:jpg|jpeg|gif|png|ico|cur|gz|svg|mp4|ogg|ogv|webm|htc)$ {
|
||||
add_header Cache-Control "max-age=2592000";
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location ~* \.(?:css|js)$ {
|
||||
add_header Cache-Control "max-age=31536000";
|
||||
access_log off;
|
||||
}
|
||||
|
||||
location ~* \.(?:ttf|ttc|otf|eot|woff|woff2)$ {
|
||||
add_header Cache-Control "max-age=2592000";
|
||||
access_log off;
|
||||
}
|
||||
|
||||
# Gzip compression
|
||||
gzip on;
|
||||
gzip_comp_level 5;
|
||||
gzip_min_length 256;
|
||||
gzip_proxied any;
|
||||
gzip_vary on;
|
||||
gzip_types
|
||||
application/atom+xml
|
||||
application/javascript
|
||||
application/json
|
||||
application/ld+json
|
||||
application/manifest+json
|
||||
application/rss+xml
|
||||
application/vnd.geo+json
|
||||
application/vnd.ms-fontobject
|
||||
application/x-font-ttf
|
||||
application/x-web-app-manifest+json
|
||||
application/xhtml+xml
|
||||
application/xml
|
||||
font/opentype
|
||||
image/bmp
|
||||
image/svg+xml
|
||||
image/x-icon
|
||||
text/cache-manifest
|
||||
text/css
|
||||
text/plain
|
||||
text/vcard
|
||||
text/vnd.rim.location.xloc
|
||||
text/vtt
|
||||
text/x-component
|
||||
text/x-cross-domain-policy;
|
|
@ -0,0 +1,128 @@
|
|||
<IfModule mod_rewrite.c>
|
||||
RewriteEngine on
|
||||
|
||||
# Ensure the Authorization HTTP header is available to PHP
|
||||
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
|
||||
|
||||
RewriteRule /\.git / [F,L]
|
||||
RewriteRule ^composer\.(lock|json)$ / [F,L]
|
||||
RewriteRule ^config.php$ / [F,L]
|
||||
RewriteRule ^flarum$ / [F,L]
|
||||
RewriteRule ^storage/(.*)?$ / [F,L]
|
||||
RewriteRule ^vendor/(.*)?$ / [F,L]
|
||||
|
||||
# Pass requests that don't refer directly to files in the filesystem to index.php
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteRule ^ index.php [QSA,L]
|
||||
</IfModule>
|
||||
|
||||
# Disable directory listings
|
||||
Options -Indexes
|
||||
|
||||
# MultiViews can mess up our rewriting scheme
|
||||
Options -MultiViews
|
||||
|
||||
# The following directives are based on best practices from H5BP Apache Server Configs
|
||||
# https://github.com/h5bp/server-configs-apache
|
||||
|
||||
# Expire rules for static content
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive on
|
||||
ExpiresDefault "access plus 1 month"
|
||||
ExpiresByType text/css "access plus 1 year"
|
||||
ExpiresByType application/atom+xml "access plus 1 hour"
|
||||
ExpiresByType application/rdf+xml "access plus 1 hour"
|
||||
ExpiresByType application/rss+xml "access plus 1 hour"
|
||||
ExpiresByType application/json "access plus 0 seconds"
|
||||
ExpiresByType application/ld+json "access plus 0 seconds"
|
||||
ExpiresByType application/schema+json "access plus 0 seconds"
|
||||
ExpiresByType application/vnd.geo+json "access plus 0 seconds"
|
||||
ExpiresByType application/vnd.api+json "access plus 0 seconds"
|
||||
ExpiresByType application/xml "access plus 0 seconds"
|
||||
ExpiresByType text/calendar "access plus 0 seconds"
|
||||
ExpiresByType text/xml "access plus 0 seconds"
|
||||
ExpiresByType image/vnd.microsoft.icon "access plus 1 week"
|
||||
ExpiresByType image/x-icon "access plus 1 week"
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
ExpiresByType application/javascript "access plus 1 year"
|
||||
ExpiresByType application/x-javascript "access plus 1 year"
|
||||
ExpiresByType text/javascript "access plus 1 year"
|
||||
ExpiresByType application/manifest+json "access plus 1 week"
|
||||
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"
|
||||
ExpiresByType text/cache-manifest "access plus 0 seconds"
|
||||
ExpiresByType text/markdown "access plus 0 seconds"
|
||||
ExpiresByType audio/ogg "access plus 1 month"
|
||||
ExpiresByType image/bmp "access plus 1 month"
|
||||
ExpiresByType image/gif "access plus 1 month"
|
||||
ExpiresByType image/jpeg "access plus 1 month"
|
||||
ExpiresByType image/png "access plus 1 month"
|
||||
ExpiresByType image/svg+xml "access plus 1 month"
|
||||
ExpiresByType image/webp "access plus 1 month"
|
||||
ExpiresByType video/mp4 "access plus 1 month"
|
||||
ExpiresByType video/ogg "access plus 1 month"
|
||||
ExpiresByType video/webm "access plus 1 month"
|
||||
ExpiresByType application/wasm "access plus 1 year"
|
||||
ExpiresByType font/collection "access plus 1 month"
|
||||
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
|
||||
ExpiresByType font/eot "access plus 1 month"
|
||||
ExpiresByType font/opentype "access plus 1 month"
|
||||
ExpiresByType font/otf "access plus 1 month"
|
||||
ExpiresByType application/x-font-ttf "access plus 1 month"
|
||||
ExpiresByType font/ttf "access plus 1 month"
|
||||
ExpiresByType application/font-woff "access plus 1 month"
|
||||
ExpiresByType application/x-font-woff "access plus 1 month"
|
||||
ExpiresByType font/woff "access plus 1 month"
|
||||
ExpiresByType application/font-woff2 "access plus 1 month"
|
||||
ExpiresByType font/woff2 "access plus 1 month"
|
||||
ExpiresByType text/x-cross-domain-policy "access plus 1 week"
|
||||
</IfModule>
|
||||
|
||||
# Gzip compression
|
||||
<IfModule mod_deflate.c>
|
||||
<IfModule mod_filter.c>
|
||||
AddOutputFilterByType DEFLATE "application/atom+xml" \
|
||||
"application/javascript" \
|
||||
"application/json" \
|
||||
"application/ld+json" \
|
||||
"application/manifest+json" \
|
||||
"application/rdf+xml" \
|
||||
"application/rss+xml" \
|
||||
"application/schema+json" \
|
||||
"application/vnd.geo+json" \
|
||||
"application/vnd.ms-fontobject" \
|
||||
"application/wasm" \
|
||||
"application/x-font-ttf" \
|
||||
"application/x-javascript" \
|
||||
"application/x-web-app-manifest+json" \
|
||||
"application/xhtml+xml" \
|
||||
"application/xml" \
|
||||
"font/collection" \
|
||||
"font/eot" \
|
||||
"font/opentype" \
|
||||
"font/otf" \
|
||||
"font/ttf" \
|
||||
"image/bmp" \
|
||||
"image/svg+xml" \
|
||||
"image/vnd.microsoft.icon" \
|
||||
"image/x-icon" \
|
||||
"text/cache-manifest" \
|
||||
"text/calendar" \
|
||||
"text/css" \
|
||||
"text/html" \
|
||||
"text/javascript" \
|
||||
"text/plain" \
|
||||
"text/markdown" \
|
||||
"text/vcard" \
|
||||
"text/vnd.rim.location.xloc" \
|
||||
"text/vtt" \
|
||||
"text/x-component" \
|
||||
"text/x-cross-domain-policy" \
|
||||
"text/xml"
|
||||
</IfModule>
|
||||
</IfModule>
|
||||
|
||||
# Fix for https://httpoxy.org vulnerability
|
||||
<IfModule mod_headers.c>
|
||||
RequestHeader unset Proxy
|
||||
</IfModule>
|
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* For detailed copyright and license information, please view the
|
||||
* LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
$site = require 'site.php';
|
||||
|
||||
/*
|
||||
|-------------------------------------------------------------------------------
|
||||
| Accept incoming HTTP requests
|
||||
|-------------------------------------------------------------------------------
|
||||
|
|
||||
| Every HTTP request pointed to the web server that cannot be served by simply
|
||||
| responding with one of the assets files will be sent to
|
||||
| this file. Now is the time to boot up Flarum's internal HTTP server, which
|
||||
| will try its best to interpret the request and return the appropriate
|
||||
| response, which could be a JSON document (for API responses) or a lot of HTML.
|
||||
|
|
||||
*/
|
||||
|
||||
$server = new Flarum\Http\Server($site);
|
||||
$server->listen();
|
|
@ -0,0 +1,50 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* This file is part of Flarum.
|
||||
*
|
||||
* For detailed copyright and license information, please view the
|
||||
* LICENSE file that was distributed with this source code.
|
||||
*/
|
||||
|
||||
/*
|
||||
|-------------------------------------------------------------------------------
|
||||
| Load the autoloader
|
||||
|-------------------------------------------------------------------------------
|
||||
|
|
||||
| First, let's include the autoloader, which is generated automatically by
|
||||
| Composer (PHP's package manager) after installing our dependencies.
|
||||
| From now on, all classes in our dependencies will be usable without
|
||||
| explicitly loading any files.
|
||||
|
|
||||
*/
|
||||
|
||||
require __DIR__.'/vendor/autoload.php';
|
||||
|
||||
/*
|
||||
|-------------------------------------------------------------------------------
|
||||
| Configure the site
|
||||
|-------------------------------------------------------------------------------
|
||||
|
|
||||
| A Flarum site represents your local installation of Flarum. It can be
|
||||
| configured with a bunch of paths:
|
||||
|
|
||||
| - The *base path* is Flarum's root directory and contains important files
|
||||
| such as config.php and extend.php.
|
||||
| - The *public path* is the directory that serves as document root for the
|
||||
| web server. Files in this place are accessible to the public internet.
|
||||
| This is where assets such as JavaScript files or CSS stylesheets need to
|
||||
| be stored in a default install.
|
||||
| - The *storage path* is a place for Flarum to store files it generates during
|
||||
| runtime. This could be caches, session data or other temporary files.
|
||||
|
|
||||
| The fully configured site instance is returned to the including script, which
|
||||
| then uses it to boot up the Flarum application and e.g. accept web requests.
|
||||
|
|
||||
*/
|
||||
|
||||
return Flarum\Foundation\Site::fromPaths([
|
||||
'base' => __DIR__,
|
||||
'public' => __DIR__,
|
||||
'storage' => __DIR__.'/storage',
|
||||
]);
|
Loading…
Reference in New Issue