mirror of
https://framagit.org/hubzilla/core.git
synced 2026-06-21 00:52:33 -04:00
- "hubzilla" replaced by "zotserver" in file names and file content when relevant - Nginx can now be installed as the web server (Apache still chosen by default in the config file) - Setup script now allows installation of multiple hub/instances on the same server - Daily cron jobs script was updated an splitted : one global script launches shared commands (SSL cert renewal + global backup on external device) and every instance has its own script for git pull (individual scripts are launched by the global one)
145 lines
4.5 KiB
Plaintext
145 lines
4.5 KiB
Plaintext
##
|
|
# Hubzilla/Zap/Mistpark/Osada Nginx block configuration template
|
|
# based on the example created by Olaf Conradi
|
|
#
|
|
# The files generated with this template will be added to
|
|
# /etc/nginx/sites-available & /etc/nginx/sites-enabled (symlink)
|
|
##
|
|
|
|
##
|
|
# You should look at the following URL's in order to grasp a solid understanding
|
|
# of Nginx configuration files in order to fully unleash the power of Nginx.
|
|
#
|
|
# http://wiki.nginx.org/Pitfalls
|
|
# http://wiki.nginx.org/QuickStart
|
|
# http://wiki.nginx.org/Configuration
|
|
##
|
|
|
|
##
|
|
# This configuration assumes
|
|
# You filled the zotserver-config.txt file
|
|
# Your domain/subdomain is functionnal
|
|
# You want all traffic to be https
|
|
# You have PHP FastCGI Process Manager (php-fpm) running on localhost
|
|
##
|
|
|
|
server {
|
|
listen 80;
|
|
server_name SERVER_NAME;
|
|
|
|
# HTTP > HTTPS #
|
|
return 301 https://$server_name$request_uri;
|
|
}
|
|
|
|
##
|
|
# Configure Red with SSL
|
|
#
|
|
# All requests are routed to the front controller
|
|
# except for certain known file types like images, css, etc.
|
|
# Those are served statically whenever possible with a
|
|
# fall back to the front controller (needed for avatars, for example)
|
|
##
|
|
|
|
server {
|
|
listen 443 ssl;
|
|
server_name SERVER_NAME;
|
|
|
|
ssl on;
|
|
ssl_certificate /etc/letsencrypt/live/SERVER_NAME/fullchain.pem;
|
|
ssl_certificate_key /etc/letsencrypt/live/SERVER_NAME/privkey.pem;
|
|
ssl_session_timeout 5m;
|
|
# DO WE NEED TO REVIEW THE FOLLOWING SETTINGS?
|
|
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
|
|
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
|
|
ssl_prefer_server_ciphers on;
|
|
|
|
fastcgi_param HTTPS on;
|
|
|
|
charset utf-8;
|
|
root INSTALL_PATH;
|
|
index index.php;
|
|
access_log /var/log/nginx/ZOTSERVER_LOG;
|
|
|
|
#Uncomment the following line to include a standard configuration file
|
|
#Note that the most specific rule wins and your standard configuration
|
|
#will therefore *add* to this file, but not override it.
|
|
#include standard.conf
|
|
|
|
# allow uploads up to 20MB in size
|
|
client_max_body_size 20m;
|
|
client_body_buffer_size 128k;
|
|
|
|
include mime.types;
|
|
|
|
# rewrite to front controller as default rule
|
|
location / {
|
|
if (!-e $request_filename) {
|
|
rewrite ^(.*)$ /index.php?req=$1;
|
|
}
|
|
}
|
|
|
|
# make sure webfinger and other well known services aren't blocked
|
|
# by denying dot files and rewrite request to the front controller
|
|
location ^~ /.well-known/ {
|
|
allow all;
|
|
if (!-e $request_filename) {
|
|
rewrite ^(.*)$ /index.php?req=$1;
|
|
}
|
|
}
|
|
|
|
# statically serve these file types when possible
|
|
# otherwise fall back to front controller
|
|
# allow browser to cache them
|
|
# added .htm for advanced source code editor library
|
|
# location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|map|ttf|woff|woff2|svg)$ {
|
|
# expires 30d;
|
|
# try_files $uri /index.php?req=$uri&$args;
|
|
# }
|
|
# SHOULD WE UNCOMMENT THE ABOVE LINES ?
|
|
|
|
# block these file types
|
|
location ~* \.(tpl|md|tgz|log|out)$ {
|
|
deny all;
|
|
}
|
|
|
|
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
|
|
# or a unix socket
|
|
location ~* \.php$ {
|
|
# IS THE FOLLOWING STILL RELEVANT AS OF AUGUST 2020?
|
|
# Zero-day exploit defense.
|
|
# http://forum.nginx.org/read.php?2,88845,page=3
|
|
# Won't work properly (404 error) if the file is not stored on this
|
|
# server, which is entirely possible with php-fpm/php-fcgi.
|
|
# Comment the 'try_files' line out if you set up php-fpm/php-fcgi on
|
|
# another machine. And then cross your fingers that you won't get hacked.
|
|
try_files $uri =404;
|
|
|
|
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini
|
|
fastcgi_split_path_info ^(.+\.php)(/.+)$;
|
|
|
|
# With php5-cgi alone:
|
|
# fastcgi_pass 127.0.0.1:9000;
|
|
|
|
# With php-fpm:
|
|
fastcgi_pass unix:PHP_FPM_SOCK;
|
|
|
|
include fastcgi_params;
|
|
fastcgi_index index.php;
|
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
|
|
}
|
|
|
|
# deny access to all dot files
|
|
location ~ /\. {
|
|
deny all;
|
|
}
|
|
|
|
#deny access to store
|
|
|
|
location ~ /store {
|
|
deny all;
|
|
}
|
|
|
|
|
|
}
|
|
|