====== NGINX ======
===== Basics =====
Reload configuration inside docker:
docker exec -ti nginxcontainer nginx -s reload
===== Example rules =====
==== Deny all requests that contain "wp-cron.php" anywhere ====
location ~ wp-cron.php? {
deny all;
access_log off;
log_not_found off;
return 444;
}
===== Enable sites =====
$ ln -s /etc/nginx/sites-available/seximes /etc/nginx/sites-enabled/
$ service nginx restart
===== NGINX + PHP =====
Install the dependences:
''sudo apt-get install php5-common php5-cli php5-fpm''
Install nginx:
''sudo apt-get install nginx''
Start nginx:
''sudo service nginx start''
Test that it's working (should see "Welcome to nginx!")
''sudo service nginx stop''
In your nginx site configuration (/etc/nginx/sites-available/default), uncomment the lines in the server {} section starting with ''listen for ipv4 / ipv6 both.''
scroll down to where it says ''location ~ .php {'' and uncomment lines so it looks like this:
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
''sudo service php5-fpm restart
sudo service nginx restart''
Your default web root is located at ''/usr/share/nginx/www''
To install mysql: ''sudo apt-get install mysql-server php5-mysql''
==== Note ====
:?: At this point I do not know if this works for a 502 Bad Gateway error but...
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
==== Example for php7 ====
You have to ensure that php7 is working:
service --status-all
service php7.0-fpm status
You can put a ''check.php'' file on your site:
server {
server_name mantis.codi.coop;
root /srv/mantis;
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
fastcgi_buffer_size 128k;
fastcgi_buffers 8 128k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 128k;
}
}
===== Notes =====
==== With wordpress ====
=== Accept post name as permalink ===
In the ''server'' section inside the configuration part:
# unless the request is for a valid file, send to bootstrap
if (!-e $request_filename)
{
rewrite ^(.+)$ /index.php?q=$1 last;
}
==== Redirect to Flask app (in Gunicorn) ====
server {
listen 80;
listen [::]:80;
server_name alfred.is-a-rockstar.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
==== Redirect www to another ====
# /etc/nginx/sites-available/exploreflask.com
# Redirect www.exploreflask.com to exploreflask.com
server {
server_name www.exploreflask.com;
rewrite ^ http://exploreflask.com/ permanent;
}
# Handle requests to exploreflask.com on port 80
server {
listen 80;
server_name exploreflask.com;
# Handle all locations
location / {
# Pass the request to Gunicorn
proxy_pass http://127.0.0.1:8000;
# Set some HTTP headers so that our app knows where the
# request really came from
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
==== Having several hosts ====
You can have several "server", for example:
server {
listen 80;
listen [::]:80;
server_name alfred.is-a-rockstar.com;
location / {
proxy_pass http://127.0.0.1:5000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
and
server {
listen 80;
listen [::]:80;
root /var/www/seximes;
index index.html index.htm;
server_name seximes.cat;
location / {
try_files $uri $uri/ =404;
}
}
==== Example reverse proxy configuration ====
server {
server_name wiki.sir.gtd;
location / {
proxy_pass http://dokuwiki:80;
proxy_set_header Host $host;
proxy_set_header Accept-Encoding "";
proxy_set_header X-Real-IP $remote_addr;
proxy_buffering off;
}
listen 80;
}