# https://www.nginx.com/resources/wiki/start/topics/recipes/symfony/ # NOTE: This makes any .php file other than app, app_dev and config.php # downloadable. If you want one to run, add it to the "pass the PHP scripts to # upstream FCGI" location section below. Be careful adding files with # sensitive data like passwords inside them. limit_req_zone $binary_remote_addr zone=gliders:10m rate=10r/s; server { listen 80; listen [::]:80; server_name mars.noc.ac.uk; return 301 https://$server_name$request_uri; } server { listen 443 ssl; listen [::]:443 ssl; server_name mars.noc.ac.uk; ssl_certificate /etc/letsencrypt/live/mars.noc.ac.uk/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/mars.noc.ac.uk/privkey.pem; set $symfonyfile "app"; set $symfonyroot "/var/gliders/www"; set $symfonyenv "prod"; root $symfonyroot/web; error_log /var/log/nginx/gliders.error.log; access_log /var/log/nginx/$symfonyenv.gliders.access.log; # Enable compression. Very helpful when we're getting stuff like # large amounts of vehicle tracks in JSON form! gzip on; gzip_types text/plain application/xml text/html text/css application/json application/x-javascript text/xml text/javascript application/javascript; # strip app.php/ prefix if it is present rewrite ^/$symfonyfile\.php/?(.*)$ /$1 permanent; location @ppm { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:8005; error_page 502 /502.html; } location / { limit_req zone=gliders burst=5; set $index_file $symfonyfile".php"; if (-f $document_root/.maintenance) { return 503; } index $index_file; try_files $uri @ppm; } location /dashboard.php { return 301 /dashboard; } location /mission.php { return 301 /missions; } location /glider/mission.php { return 301 /missions; } location /glider { return 301 /; } error_page 413 /413.html; error_page 502 /502.html; error_page 504 /504.html; error_page 503 @maintenance; location @maintenance { rewrite ^(.*)$ /maintenance.html break; } location ~ ^/(images|fonts|css|js) { access_log off; error_log off; try_files $uri =404; expires 1y; add_header Cache-Control "public"; } location ~ ^/images/vehicles/(?P<vehicle_type>[a-zA-Z0-9]+)_(?P<vehicle_name>[a-zA-Z0-9]+)\.(png|jpg)$ { access_log off; error_log off; try_files $uri images/vehicles/$vehicle_name.png =404; } location /static/logs { alias /var/gliders/logs; } location /var/gliders/logs { alias /var/gliders/logs; } location /static { alias /var/gliders/static; expires 1d; add_header Cache-Control "public"; } location /static/tracks { alias /var/gliders/static/tracks; gzip_static on; } # location /realtime { # proxy_pass http://localhost:9002/; # proxy_read_timeout 10m; # proxy_connect_timeout 10m; # } location @rewriteapp { rewrite ^(.*)$ /${symfonyfile}.php/$1 last; } # pass the PHP scripts to FastCGI server from upstream phpfcgi location ~ ^/(app|app_dev|config)\.php(/|$) { # fastcgi_pass hhvmfcgi; fastcgi_pass phpfcgi; fastcgi_intercept_errors on; # error_page 502 = @fallback; error_page 502 /502.html; include fastcgi_params; fastcgi_split_path_info ^(.+\.php)(/.*)$; fastcgi_param SCRIPT_FILENAME $symfonyroot/web$fastcgi_script_name; fastcgi_param HTTPS on; } # location @fallback { # fastcgi_pass phpfcgi; # fastcgi_intercept_errors on; # include fastcgi_params; # fastcgi_split_path_info ^(.+\.php)(/.*)$; # fastcgi_param SCRIPT_FILENAME $symfonyroot/web$fastcgi_script_name; # fastcgi_param HTTPS off; # error_page 502 /502.html; #} }