summarylogtreecommitdiffstats
path: root/nginx-example.conf
blob: f0a1645fad21c3d0705142ed01ba27b89ae6c6b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
server {
   listen   80;
   server_name FQDN;
   charset utf-8;

   root /usr/share/webapps/ampache;
   index index.php;

   access_log /var/log/nginx/ampache.access.log;
   error_log /var/log/nginx/ampache.error.log;

   client_max_body_size 1G;
   client_body_buffer_size 128k;

   # Rewrite rule for Subsonic backend
   if ( !-d $request_filename ) {
      rewrite ^/rest/(.*).view$ /rest/index.php?action=$1 last;
      rewrite ^/rest/fake/(.+)$ /play/$1 last;
   }

   # Rewrite rule for Plex backend
   if ( !-d $request_filename ) {
      rewrite ^/plex/(.*)$ /plex/index.php?action=$1 last;
   }

   # Rewrite rule for Channels
   if (!-d $request_filename){
      rewrite ^/channel/([0-9]+)/(.*)$ /channel/index.php?channel=$1&target=$2 last;
   }

   # Beautiful URL Rewriting
   rewrite ^/play/ssid/(\w+)/type/(\w+)/oid/([0-9]+)/uid/([0-9]+)/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&name=$5 last;
   rewrite ^/play/ssid/(\w+)/type/(\w+)/oid/([0-9]+)/uid/([0-9]+)/client/(.*)/noscrobble/([0-1])/name/(.*)$ /play/index.php?ssid=$1&type=$2&oid=$3&uid=$4&client=$5&noscrobble=$6&name=$7 last;
   location /play {
      if (!-e $request_filename) {
         rewrite ^/play/art/([^/]+)/([^/]+)/([0-9]+)/thumb([0-9]*)\.([a-z]+)$ /image.php?object_type=$2&object_id=$3&auth=$1;
         break;
      }

      rewrite ^/([^/]+)/([^/]+)(/.*)?$ /play/$3?$1=$2;
      rewrite ^/(/[^/]+|[^/]+/|/?)$ /play/index.php last;
      break;
   }

   location /rest {
      limit_except GET POST {
         deny all;
      }
   }

   location /plex {
      limit_except GET POST {
         deny all;
      }
   }

   location ^~ /bin/ {
      deny all;
      return 403;
   }

   location ^~ /config/ {
      deny all;
      return 403;
   }

   location / {
      limit_except GET POST HEAD{
         deny all;
      }
   }

   location ~ ^/.*.php {
    # PHP config...
   }

   location ~ \.php$ {
     try_files  $uri =404;
     fastcgi_pass   unix:/run/php-fpm/php-fpm.sock;
     fastcgi_index  index.php;
     fastcgi_param  PHP_ADMIN_VALUE "open_basedir=/tmp/:/usr/share/webapps/ampache/:/var/log:/usr/bin";
     include        /etc/nginx/fastcgi_params;
     fastcgi_param  SCRIPT_FILENAME  $document_root/$fastcgi_script_name;
   }

   # Rewrite rule for WebSocket
   location /ws {
    rewrite ^/ws/(.*) /$1 break;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";
    proxy_set_header Host $host;
    proxy_pass http://127.0.0.1:8100/;
   }
}