|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
# Friendica Nginx configuration |
|
|
|
|
|
# by Pawlik |
|
|
|
|
|
# |
|
|
|
|
|
# On Debian based distributions you can add this file to |
|
|
|
|
|
# /etc/nginx/sites-available |
|
|
|
|
|
# |
|
|
|
|
|
# Then customize to your needs. To enable the configuration |
|
|
|
|
|
# symlink it to /etc/nginx/sites-enabled and reload Nginx |
|
|
|
|
|
# using /etc/init.d/nginx reload |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
# 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 your domain is example.net |
|
|
|
|
|
# You have a separate subdomain friendica.example.net |
|
|
|
|
|
# You want all friendica traffic to be https |
|
|
|
|
|
# You have an SSL certificate and key for your subdomain |
|
|
|
|
|
# You have PHP FastCGI Process Manager (php7-fpm) running on localhost |
|
|
|
|
|
# You have Friendica installed in /mnt/friendica/www |
|
|
|
|
|
## |
|
|
|
|
|
|
|
|
|
|
|
server { |
|
|
|
|
|
server_name ixyz.com; |
|
|
|
|
|
index index.php; |
|
|
|
|
|
root /home/root/friendica; |
|
|
|
|
|
rewrite ^ https://xyz.com$request_uri? permanent; |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
## |
|
|
|
|
|
# Configure Friendica 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; |
|
|
|
|
|
listen [::]:443 ssl; |
|
|
|
|
|
server_name xyz.com |
|
|
|
|
|
|
|
|
|
|
|
index index.php; |
|
|
|
|
|
root /home/root/friendica; |
|
|
|
|
|
|
|
|
|
|
|
ssl on; |
|
|
|
|
|
ssl_certificate /etc/nginx/ssl/friendica.example.net.chain.pem; |
|
|
|
|
|
ssl_certificate_key /etc/nginx/ssl/example.net.key; |
|
|
|
|
|
ssl_session_timeout 5m; |
|
|
|
|
|
ssl_protocols SSLv3 TLSv1 TLSv1.1 TLSv1.2 TLSv1.3; |
|
|
|
|
|
ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv3:+EXP; |
|
|
|
|
|
ssl_prefer_server_ciphers on; |
|
|
|
|
|
fastcgi_param HTTPS on; |
|
|
|
|
|
# allow uploads up to 20MB in size |
|
|
|
|
|
client_max_body_size 20m; |
|
|
|
|
|
client_body_buffer_size 128k; |
|
|
|
|
|
|
|
|
|
|
|
# rewrite to front controller as default rule |
|
|
|
|
|
location / { |
|
|
|
|
|
rewrite ^/(.*) /index.php?q=$uri&$args last; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# 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; |
|
|
|
|
|
rewrite ^/(.*) /index.php?q=$uri&$args last; |
|
|
|
|
|
} |
|
|
|
|
|
include mime.types; |
|
|
|
|
|
# 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|ttf|svg)$ { |
|
|
|
|
|
expires 30d; |
|
|
|
|
|
try_files $uri /index.php?q=$uri&$args; |
|
|
|
|
|
} |
|
|
|
|
|
# block these file types |
|
|
|
|
|
location ~* \.(tpl|md|tgz|log|out)$ { |
|
|
|
|
|
deny all; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
location ~ [^/]\.php(/|$) { |
|
|
|
|
|
|
|
|
|
|
|
try_files $uri =404; |
|
|
|
|
|
|
|
|
|
|
|
fastcgi_split_path_info ^(.+\.php)(/.+)$; |
|
|
|
|
|
# fastcgi_pass unix:/var/run/php/php7.0-fpm.sock; |
|
|
|
|
|
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; |
|
|
|
|
|
include fastcgi_params; |
|
|
|
|
|
fastcgi_index index.php; |
|
|
|
|
|
# fastcgi_param PATH_INFO $fastcgi_path_info; |
|
|
|
|
|
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; |
|
|
|
|
|
|
|
|
|
|
|
fastcgi_buffers 16 16k; |
|
|
|
|
|
fastcgi_buffer_size 32k; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 |
|
|
|
|
|
# location ~* \.php$ { |
|
|
|
|
|
# fastcgi_split_path_info ^(.+\.php)(/.+)$; |
|
|
|
|
|
# NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini |
|
|
|
|
|
|
|
|
|
|
|
# With php5-cgi alone: |
|
|
|
|
|
# fastcgi_pass 127.0.0.1:9000; |
|
|
|
|
|
|
|
|
|
|
|
# With php5-fpm: |
|
|
|
|
|
# fastcgi_pass unix:/var/run/php5-fpm.sock; |
|
|
|
|
|
# fastcgi_index index.php; |
|
|
|
|
|
# include fastcgi_params; |
|
|
|
|
|
# } |
|
|
|
|
|
|
|
|
|
|
|
# deny access to all dot files |
|
|
|
|
|
location ~ /\. { |
|
|
|
|
|
deny all; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|