Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

IBX-3465: Copied vhost templates from docker repo #50

Merged
merged 3 commits into from
Feb 22, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
125 changes: 125 additions & 0 deletions resources/templates/apache2/vhost.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,125 @@
# Official VirtualHost configuration for Apache 2.4 template
# See Readme.md for how to generate your config manually, or in automated deployments.
# Note: This is meant to be manually tailored for your needs, expires headers might for instance not work for your dev setup.

# NameVirtualHost %IP_ADDRESS%

<VirtualHost %IP_ADDRESS%:%PORT%>
ServerName %HOST_NAME%
ServerAlias %HOST_ALIAS%
DocumentRoot %BASEDIR%/public
DirectoryIndex index.php

# Request size limit in bytes, 0 to disable
LimitRequestBody %BODY_SIZE_LIMIT%

# Request timeout limit in seconds, 0 to disable
TimeOut %TIMEOUT%

# Enabled for Dev environment
#LogLevel debug

# "public" folder is what we expose to the world, all rewrite rules further down are relative to it.
<Directory %BASEDIR%/public>
<FilesMatch \.php$>
# For serving php files configure mod_proxy to talk to php-fpm using Apache 2.4.10 and higher.
# See: https://wiki.apache.org/httpd/PHP-FPM#apache_httpd_2.4

# For best performance, prefer socket use. This requires Linux, and that both Apache and PHP has access to
# the socket file `/var/run/php5-fpm.sock` via local file system and hence run on the same machine.
#SetHandler "proxy:unix:/var/run/php5-fpm.sock|fcgi://localhost/"
# For TCP usage, if you're not on Linux, or Apache and PHP are on separate machines, instead use fcgi: form.
# (Optionally hint php-fpm processes count using: https://wiki.apache.org/httpd/PHP-FPM#Proxy_via_handler)
#SetHandler "proxy:fcgi://localhost/:9000"

SetHandler "proxy:%FASTCGI_PASS%|fcgi://localhost/"
</FilesMatch>

Options FollowSymLinks
AllowOverride None
Require all granted
</Directory>

## Ibexa DXP / Symfony ENVIRONMENT variables, for customizing index.php* execution
# * Only APP_ENV and APP_DEBUG supported by console command, rest are Ibexa DXP features in index.php.

# Environment.
# Possible values: "prod" and "dev" out-of-the-box, other values possible with proper configuration
# Defaults to "dev" if omitted (uses SetEnvIf so value can be used in rewrite rules)
#if[APP_ENV] SetEnvIf Request_URI ".*" APP_ENV=%APP_ENV%

# Optional: Whether to use debugging.
# Possible values: 0, 1 or ""
# Defaults to enabled if APP_ENV is set to "dev" if env value is omitted or empty
#if[APP_DEBUG] SetEnv APP_DEBUG "%APP_DEBUG%"

# Optional: Whether to use Symfony's builtin HTTP Caching Proxy.
# Disable it if you are using an external reverse proxy (e.g. Varnish)
# Possible values: 0, 1 or ""
# Defaults to disabled if APP_ENV is set to "dev" or TRUSTED_PROXIES is set,
# and if this env value is omitted or empty
#if[APP_HTTP_CACHE] SetEnv APP_HTTP_CACHE "%APP_HTTP_CACHE%"

# Optional: Defines the proxies to trust
# Needed when using Varnish as proxy, if so disable APP_HTTP_CACHE.
# Separate entries by a comma, example: "ip1,ip2"
# Defaults to not be set if env value is omitted or empty
#if[TRUSTED_PROXIES] SetEnv TRUSTED_PROXIES "%TRUSTED_PROXIES%"

# TIP: There are many more environment variables supported by Ibexa DXP. However unlike those listed above
# they should in most cases rather be set in the environment then in vhost config to make sure cronjobs
# and cli command usage takes them into account as well.

<IfModule mod_rewrite.c>
RewriteEngine On

# For FastCGI mode or when using PHP-FPM, to get basic auth working.
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

# Disable .php(3) and other executable extensions in the var directory
RewriteRule ^var/.*(?i)\.(php3?|phar|phtml|sh|exe|pl|bin)$ - [F]

# Cluster/streamed files rewrite rules. Enable on cluster with DFS as a binary data handler
RewriteCond %{ENV:BINARY_DATA_HANDLER} "dfs"
RewriteRule ^/var/([^/]+/)?storage/images(-versioned)?/.* /index.php [L]

RewriteRule ^/var/([^/]+/)?storage/images(-versioned)?/.* - [L]

# Makes it possible to placed your favicon and robots.txt at the root of your public folder
RewriteRule ^/favicon\.ico - [L]
RewriteRule ^/robots\.txt - [L]

# The following rules are needed to correctly display bundle and project assets
RewriteRule ^/bundles/ - [L]
RewriteRule ^/assets/ - [L]
RewriteRule ^/build/ - [L]

# Additional Assetic rules for environments different from dev,
# remember to run php bin/console assetic:dump --env=prod
RewriteCond %{ENV:APP_ENV} !^(dev)
RewriteRule ^/(css|js|fonts?)/.*\.(css|js|otf|eot|ttf|svg|woff) - [L]

# Prevent access to website with direct usage of index.php in URL
RewriteRule ^/([^/]+/)?index\.php([/?#]|$) - [R=404,L]

RewriteRule .* /index.php
</IfModule>

# Everything below is optional to improve performance by forcing
# clients to cache image and design files, change the expires time
# to suite project needs.
<IfModule mod_expires.c>
<LocationMatch "^/var/[^/]+/storage/images/.*">
# Ibexa DXP appends the version number to image URL (image
# datatype) so when an image is updated, its URL changes too
ExpiresActive on
ExpiresDefault "now plus 10 years"
</LocationMatch>
</IfModule>

# Enable gzip encoding
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/plain text/css application/json text/javascript application/javascript text/xml application/xml application/xml+rss
# NOTE: Using gzip on text/html can be a security issue. See http://breachattack.com.
</IfModule>
</VirtualHost>
23 changes: 23 additions & 0 deletions resources/templates/nginx/ibexa_params.d/ibexa_fastcgi_params
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@

# Including the distribution's default fastcgi parameters
include fastcgi_params;

fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;

set $fc_script_name "index.php";

if ( $uri ~ "^/(.*\.php)" ) {
set $fc_script_name $1;
}

fastcgi_split_path_info ^(.+\.php)(/.+)$;

fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_NAME $fc_script_name;
fastcgi_param SCRIPT_FILENAME $document_root/$fc_script_name;

fastcgi_index index.php;

11 changes: 11 additions & 0 deletions resources/templates/nginx/ibexa_params.d/ibexa_prod_rewrite_params
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@

# Additional Assetic rules
## Don't forget to run php bin/console assetic:dump --env=prod
## and make sure to comment these out in DEV environment.
rewrite "^/css/(.*)\.css" "/css/$1.css" break;
rewrite "^/js/(.*)\.js" "/js/$1.js" break;
rewrite "^/font(s?)/(.*)\.ttf" "/font$1/$2.ttf" break;
rewrite "^/font(s?)/(.*)\.woff" "/font$1/$2.woff" break;
rewrite "^/font(s?)/(.*)\.otf" "/font$1/$2.otf" break;
rewrite "^/font(s?)/(.*)\.eot" "/font$1/$2.eot" break;
rewrite "^/font(s?)/(.*)\.svg" "/font$1/$2.svg" break;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rewrite "^/var/([^/]+/)?storage/images(-versioned)?/(.*)" "/index.php" break;
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
rewrite "^/var/([^/]+/)?storage/images(-versioned)?/(.*)" "/var/$1storage/images$2/$3" break;
27 changes: 27 additions & 0 deletions resources/templates/nginx/ibexa_params.d/ibexa_rewrite_params
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
rewrite "^/var/([^/]+/)?storage/images(-versioned)?/(.*)" "/var/$1storage/images$2/$3" break;

# Makes it possible to place your favicon at the root of your
# Ibexa DXP instance. It will then be served directly.
rewrite "^/favicon\.ico" "/favicon.ico" break;

# Give direct access to robots.txt for use by crawlers (Google,
# Bing, Spammers..)
rewrite "^/robots\.txt" "/robots.txt" break;

# Platform for Privacy Preferences Project ( P3P ) related files
# for Internet Explorer
# More info here : http://en.wikipedia.org/wiki/P3p
rewrite "^/w3c/p3p\.xml" "/w3c/p3p.xml" break;

# Following rule is needed to correctly display bundle and project assets
rewrite "^/bundles/(.*)" "/bundles/$1" break;
rewrite "^/build/(.*)" "/build/$1" break;
rewrite "^/assets/(.*)" "/assets/$1" break;

# Prevent access to website with direct usage of index.php in URL
if ($request_uri ~ "^/([^/]+/)?index\.php([/?#]|$)") {
return 404;
}

rewrite "^(.*)$" "/index.php$1" last;

7 changes: 7 additions & 0 deletions resources/templates/nginx/ibexa_params.d/ibexa_server_params
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@

disable_symlinks off;

location = /favicon.ico {
log_not_found off;
access_log off;
}
79 changes: 79 additions & 0 deletions resources/templates/nginx/vhost.template
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@

server {
listen %PORT%;
# Further documentation: http://nginx.org/en/docs/http/server_names.html
server_name %HOST_LIST%;

root %BASEDIR%/public;

# Additional Assetic rules
## Don't forget to run php bin/console assetic:dump --env=prod
## and make sure to comment these out in DEV environment.
#if[APP_ENV!=dev] include ibexa_params.d/ibexa_prod_rewrite_params;

# Include image rule for DFS or binary handler
include ibexa_params.d/ibexa_rewrite_%BINARY_DATA_HANDLER%image_params;

# Include remaining Ibexa rewrite rules
include ibexa_params.d/ibexa_rewrite_params;

# upload max size
client_max_body_size %BODY_SIZE_LIMIT_M%;

# FPM fastcgi_read_timeout
fastcgi_read_timeout %TIMEOUT_S%;

# Gzip is enabled by default on most platforms, so here we just specify mime types to compress.
# NOTE: Using gzip on text/html can be a security issue, unless you somehow pad. See http://breachattack.com
gzip_types text/plain text/css application/json text/javascript application/javascript text/xml application/xml application/xml+rss;

location / {
location ~ ^/index\.php(/|$) {
include ibexa_params.d/ibexa_fastcgi_params;

# FPM socket
# Possible values : unix:/var/run/php5-fpm.sock or 127.0.0.1:9000
fastcgi_pass %FASTCGI_PASS%;

## Ibexa DXP ENVIRONMENT variables, used for customizing index.php execution (not used by console commands)

# Environment.
# Possible values: "prod" and "dev" out-of-the-box, other values possible with proper configuration
# Make sure to comment the "ibexa_params.d/ibexa_prod_rewrite_params" include above in dev.
# Defaults to "dev" if omitted
#if[APP_ENV] fastcgi_param APP_ENV %APP_ENV%;

# Whether to use debugging.
# Possible values: 0 or 1
# Defaults to 0 if omitted, unless APP_ENV is set to: "dev"
#if[APP_DEBUG] fastcgi_param APP_DEBUG "%APP_DEBUG%";

# Optional: Whether to use Symfony's builtin HTTP Caching Proxy.
# Disable it if you are using an external reverse proxy (e.g. Varnish)
# Possible values: 0 or 1
# Defaults to 1 if omitted, unless APP_ENV is set to: "dev"
#if[APP_HTTP_CACHE] fastcgi_param APP_HTTP_CACHE "%APP_HTTP_CACHE%";

# Optional: Defines the proxies to trust
# Needed when using Varnish as proxy, if so disable APP_HTTP_CACHE.
# Separate entries by a comma, example: "ip1,ip2"
# Defaults to not be set if env value is omitted or empty
#if[TRUSTED_PROXIES] fastcgi_param TRUSTED_PROXIES "%TRUSTED_PROXIES%";

# TIP: There are many more environment variables supported by Ibexa DXP. However unlike those listed above
# they should in most cases rather be set in the environment then in vhost config to make sure cronjobs
# and cli command usage takes them into account as well.
}

# Disable .php(3) and other executable extensions in the var directory
location ~ ^/var/.*(?i)\.(php3?|phar|phtml|sh|exe|pl|bin)$ {
return 403;
}
}

# Custom logs
# access_log %BASEDIR%/app/logs/httpd-access.log;
# error_log %BASEDIR%/app/logs/httpd-error.log notice;

include ibexa_params.d/ibexa_server_params;
}