{"id":63,"date":"2018-08-09T17:59:36","date_gmt":"2018-08-09T16:59:36","guid":{"rendered":"https:\/\/www.thenaylors.co.uk\/wordpress\/?p=63"},"modified":"2018-09-18T12:07:25","modified_gmt":"2018-09-18T11:07:25","slug":"omv-changes-to-nginx-for-self-hosted-sites","status":"publish","type":"post","link":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/","title":{"rendered":"OMV &#8211; Changes to NGINX for self hosted sites"},"content":{"rendered":"\r\n\r\nSo this is how I have decided to configure NGINX to get different packages working under OMV.\r\n\r\n\r\n\r\nSo the fix needed for Webtrees was to have another Server block which was not the same as that here \/etc\/nginx\/sites-available\/openmediavault-webgui.\r\n\r\nSo I copied this file and renamed as a new file matching my site URL.\r\n\r\nAdded a symlink from \/etc\/nginx\/sites-enabled\r\n\r\nInside the new file I needed to change a few lines &#8230;..\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n#    server_name openmediavault-webgui;\r\n# change to\r\n    server_name my_new_url;\r\n\r\n#    listen &#x5B;::]:80 ipv6only=off;\r\n# change to\r\n    listen &#x5B;::]:80 default_server;\r\n\r\n#    listen &#x5B;::]:443 ipv6only=off ssl deferred;\r\n# change to\r\n    listen &#x5B;::]:443 default_server;\r\n\r\n#    include \/etc\/nginx\/openmediavault-webgui.d\/*.conf;\r\n# change to\r\n\r\n    include \/etc\/nginx\/my_new_url_file.d\/*.conf;\r\n<\/pre>\r\n\r\n\r\n\r\nI then moved all the .conf files and added symlinks back to the opemmediavault files.\r\n\r\nNext Cloud &#8211; harder as needed to use root and not Alias\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/nextcloud {\r\n\troot \/media\/www;\r\n\r\n    add_header X-Content-Type-Options nosniff;\r\n    add_header X-XSS-Protection &quot;1; mode=block&quot;;\r\n    add_header X-Robots-Tag none;\r\n    add_header X-Download-Options noopen;\r\n    add_header X-Permitted-Cross-Domain-Policies none;\r\n    add_header Strict-Transport-Security &quot;max-age=15768000;includeSubDomains&quot;;&lt;br \/&gt;\r\n    location = \/nextcloud\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n\r\n\tlocation = \/nextcloud\/.well-known\/carddav {\r\n        return 301 $scheme:\/\/$host\/nextcloud\/remote.php\/dav;\r\n    }\r\n\r\n    location = \/nextcloud\/.well-known\/caldav {\r\n        return 301 $scheme:\/\/$host\/nextcloud\/remote.php\/dav;\r\n    }\r\n\r\n    location \/nextcloud\/.well-known\/acme-challenge { \r\n    }\r\n\r\n\r\n\trewrite_log on;\r\n\r\n\r\n\t# set max upload size\r\n    client_max_body_size 512M;\r\n  \tfastcgi_buffers 64 4K;\r\n\r\n# Enable gzip but do not remove ETag headers\r\n    gzip on;\r\n  \tgzip_vary on;\r\n  \tgzip_comp_level 4;\r\n  \tgzip_min_length 256;\r\n  \tgzip_proxied expired no-cache no-store private no_last_modified no_etag auth;\r\n  \tgzip_types application\/atom+xml application\/javascript application\/json application\/ld+json application\/manifest+json application\/rss+xml application\/vnd.geo+json application\/vnd.ms-fontobject application\/x-font-ttf application\/x-web-app-manifest+json application\/xhtml+xml application\/xml font\/opentype image\/bmp image\/svg+xml image\/x-icon text\/cache-manifest text\/css text\/plain text\/vcard text\/vnd.rim.location.xloc text\/vtt text\/x-component text\/x-cross-domain-policy;\r\n\r\n\t# Uncomment if your server is build with the ngx_pagespeed module\r\n    # This module is currently not supported.\r\n    #pagespeed off;\r\n    location \/nextcloud\/{\r\n #   \trewrite ^ \/nextcloud\/index.php$request_uri;\r\n #   \trewrite ^\/nextcloud\/(.*) \/nextcloud\/$1;\r\n    \trewrite ^ \/nextcloud\/index.php$uri;\r\n\r\n   }\r\n\r\n  \tlocation ~ ^\/nextcloud\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {\r\n    \tdeny all;\r\n  \t}\r\n\r\n    location ~ ^\/nextcloud(?:\\.|autotest|occ|issue|indie|db_|console) {\r\n    \tdeny all;\r\n  \t}\r\n\r\n  \tlocation ~ ^\/nextcloud\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v&#x5B;12]|updater\/.+|ocs-provider\/.+)\\.php(?:$|\/) {\r\n \t\tfastcgi_split_path_info ^(.+?\\.php)(\/.*)$;\r\n        include fastcgi.conf;\r\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n        #fastcgi_param SCRIPT_FILENAME \/media\/13eaa8c9-07ee-4dfc-9d1b-adfae0f0248d\/www\/nextcloud\/$fastcgi_script_name;\r\n        #fastcgi_param SCRIPT_FILENAME  $request_filename;\r\n        fastcgi_param PATH_INFO $fastcgi_path_info;\r\n        fastcgi_param HTTPS on;\r\n        #Avoid sending the security headers twice\r\n        fastcgi_param modHeadersAvailable true;\r\n       \tfastcgi_param front_controller_active true;\r\n        fastcgi_pass unix:\/var\/run\/my_sock_name.sock;\r\n        fastcgi_intercept_errors on;\r\n        fastcgi_request_buffering off;\r\n\t}\r\n    location ~ ^\/(?:updater|ocs-provider)(?:$|\/) {\r\n        try_files \/nextcloud\/$uri\/ =404;\r\n        index index.php;\r\n    }\r\n     location ~ \/nextcloud\/(?:$|\/)\\.(?:js|css|woof|svg|html|ttf|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n}\r\n\r\n    # Adding the cache control header for js and css files\r\n    # Make sure it is BELOW the PHP block\r\n  \tlocation ~ \\.(?:css|js|woff|svg|gif)$ {     \r\n        try_files $uri $uri\/ \/nextcloud\/index.php$request_uri;\r\n        add_header Cache-Control &quot;public, max-age=15778463&quot;;\r\n        # Add headers to serve security related headers  (It is intended\r\n        # to have those duplicated to the ones above)\r\n        # Before enabling Strict-Transport-Security headers please read\r\n        # into this topic first.\r\n        # add_header Strict-Transport-Security &quot;max-age=15768000;\r\n        # includeSubDomains; preload;&quot;;\r\n\t\tadd_header X-Content-Type-Options nosniff;\r\n        add_header X-XSS-Protection &quot;1; mode=block&quot;;\r\n        add_header X-Robots-Tag none;\r\n        add_header X-Download-Options noopen;\r\n        add_header X-Permitted-Cross-Domain-Policies none;\r\n        # Optional: Don't log access to assets\r\n        access_log off;\r\n        }\r\n\r\n    location ~ \\.(?:png|html|ttf|ico|jpg|jpeg)$ {\r\n       \ttry_files $uri $uri\/ \/nextcloud\/index.php$request_uri;\r\n         # Optional: Don't log access to other assets\r\n        access_log off;\r\n    }\r\n\r\n}\r\n<\/pre>\r\n\r\nFirefly\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/firefly {\r\n    root \/media\/www\/firefly-iii;\r\n\r\n    index index.php;\r\n    try_files $uri $uri\/ \/firefly\/index.php?$query_string;\r\n    autoindex on;\r\n    sendfile off;\r\n\r\n    location ~ \\.php$ {\r\n        include fastcgi.conf;\r\n        fastcgi_index index.php;\r\n        fastcgi_param SCRIPT_FILENAME $request_filename;\r\n        fastcgi_pass unix:\/var\/run\/my_sock_name.sock;\r\n    }\r\n\r\n    location = \/firefly\/favicon.ico {\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location = \/firefly\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location ~ \/firefly\/\\. {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/firefly\/(?:config)\/.*\\.php$ {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/firefly\/\\.(js|css|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n    }\r\n}<\/pre>\r\n\r\n\r\n\r\nSo the fix needed for Webtrees was to have another Server block which was not the same as that here \/etc\/nginx\/sites-available\/openmediavault-webgui.\r\n\r\nSo I copied this file and renamed as a new file matching my site URL.\r\n\r\nAdded a symlink from \/etc\/nginx\/sites-enabled\r\n\r\nInside the new file I needed to change a few lines &#8230;..\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n#    server_name openmediavault-webgui;\r\n# change to\r\n    server_name my_new_url;\r\n\r\n#    listen &#x5B;::]:80 ipv6only=off;\r\n# change to\r\n    listen &#x5B;::]:80 default_server;\r\n\r\n#    listen &#x5B;::]:443 ipv6only=off ssl deferred;\r\n# change to\r\n    listen &#x5B;::]:443 default_server;\r\n\r\n#    include \/etc\/nginx\/openmediavault-webgui.d\/*.conf;\r\n# change to\r\n\r\n    include \/etc\/nginx\/my_new_url_file.d\/*.conf;\r\n<\/pre>\r\n\r\n<!-- wp:paragraph -->\r\n\r\nI then moved all the .conf files and added symlinks back to the opemmediavault files.\r\n\r\nI have wanted to run a number of packages so that all I needed to do was to type in the IP address of the OMV\/package_name. I also wanted to run these from a separate drive in my case mapped to \/media\/www\/package_name.\r\n\r\nI struggled with the NGINX configuration but there were clues in the way Mysql is implemented in the NGINX .conf files. I thought I would share what I did and if someone can improve on this great.\r\n\r\nFirstly worth saying I have Webmin installed which helps with the configuration and I have included the NGINX plugin for Webmin.\r\n\r\nOMV stores the config in \/etc\/nginx\/sites-available\/openmediavault-webgui. (note NGINX only uses these configurations if there is a symlink from the \/etc\/nginx\/sites-enabled folder.\r\n\r\nIf you examine this folder it has at the bottom a line which is\r\ninclude \/etc\/nginx\/openmediavault-webgui.d\/*.conf;\r\n\r\nSo this indicates we can include additional configurations in the folder \/etc\/nginx\/openmediavault-webgui.d. And sure enough there is one for Mysql &#8211; openmediavault-mysql-management-site.conf.\r\n\r\nThe PHP sock is in this line\r\nfastcgi_pass unix:\/var\/run\/php-fpm-openmediavault-mysql.sock. And you can see the shortcut to the file if you take a look in \/var\/run. The actual PHP config are held in \/etc\/php\/7.0\/fpm\/pool.d.\r\n\r\nThis is important as I did not want to change the openmediavault-webgui.d so any future changes to OMV would not overwrite my changes.\r\n\r\nThese pool.d files are written using the NGINX plugin in OMV. So if you add a Pool via the NGINX plugin it creates the pool.d folder file after first writing the config to the \/etc\/openmediavault\/config.xml. See more about this here <a href=\"https:\/\/openmediavault.readthedocs.io\/en\/latest\/development\/internaltools.html\" target=\"_blank\" rel=\"noreferrer noopener\">openmediavault.readthedocs.io\/\u2026opment\/internaltools.html<\/a>\r\n\r\nSo I figured that I could use the NGINX plugin to create the pool.d files and the associated symlink in \/var\/run and create my own nginx .conf files in \/etc\/nginx\/openmediavault-webgui.d folder by copying the openmediavault-mysql-management-site.conf and altering the link to the .sock file. i.e. changing the line fastcgi_pass unix:\/var\/run\/php-fpm-openmediavault-mysql.sock. to fastcgi_pass unix:\/var\/run\/my_new_nginx_name.sock in the copied file.\r\n\r\nI successfully added\r\n1. WordPress\r\n2. Nextcloud\r\n3. Piwigo\r\n4. Firefly\r\n5. Webtrees\r\n6. Extplorer\r\n\r\nThe config was slightly different for each one and Webtrees was particularly tricky for me and the URL was changed to have the server &#8220;openmediavault-webgui&#8221; in the file \/etc\/nginx\/sites-available\/openmediavault-webgui replacing the url after <a href=\"https:\/\/openmediavault-webgui\/webtrees\" target=\"_blank\" rel=\"noreferrer noopener\">openmediavault-webgui\/webtrees<\/a> which messed by everything. More on Webtrees lower in the post.\r\n\r\nSo for WordPress the NGINX .conf file is (similar for Piwigo and Extplorer and Webtrees)\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/wordpress {\r\n    alias \/media\/13eaa8c9-07ee-4dfc-9d1b-adfae0f0248d\/www\/wordpress;\r\n\r\n    add_header Content-Security-Policy &quot;default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';&quot; always;\r\n\r\n    index index.php;\r\n    try_files $uri $uri\/ index.php;\r\n\r\n    location ~ \\.php$ {\r\n        include fastcgi.conf;\r\n        fastcgi_index index.php;\r\n        fastcgi_param SCRIPT_FILENAME $request_filename;\r\n       fastcgi_pass unix:\/var\/run\/fpm-19e311b1-25e1-4257-8dbc-d49c5ec59015.sock;\r\n       #fastcgi_pass unix:\/var\/run\/php5-fpm.sock;\r\n    }\r\n\r\n    location = \/wordpress\/favicon.ico {\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location = \/wordpress\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location ~ \/wordpress\/\\. {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/wordpress\/(?:config)\/.*\\.php$ {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/wordpress\/\\.(js|css|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n    }\r\n}\r\n\r\n<\/pre>\r\n\r\n\r\n\r\nNext Cloud &#8211; harder as needed to use root and not Alias\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/nextcloud {\r\n\troot \/media\/www;\r\n\r\n    add_header X-Content-Type-Options nosniff;\r\n    add_header X-XSS-Protection &quot;1; mode=block&quot;;\r\n    add_header X-Robots-Tag none;\r\n    add_header X-Download-Options noopen;\r\n    add_header X-Permitted-Cross-Domain-Policies none;\r\n    add_header Strict-Transport-Security &quot;max-age=15768000;includeSubDomains&quot;;&lt;br \/&gt;\r\n    location = \/nextcloud\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n\r\n\tlocation = \/nextcloud\/.well-known\/carddav {\r\n        return 301 $scheme:\/\/$host\/nextcloud\/remote.php\/dav;\r\n    }\r\n\r\n    location = \/nextcloud\/.well-known\/caldav {\r\n        return 301 $scheme:\/\/$host\/nextcloud\/remote.php\/dav;\r\n    }\r\n\r\n    location \/nextcloud\/.well-known\/acme-challenge { \r\n    }\r\n\r\n\r\n\trewrite_log on;\r\n\r\n\r\n\t# set max upload size\r\n    client_max_body_size 512M;\r\n  \tfastcgi_buffers 64 4K;\r\n\r\n# Enable gzip but do not remove ETag headers\r\n    gzip on;\r\n  \tgzip_vary on;\r\n  \tgzip_comp_level 4;\r\n  \tgzip_min_length 256;\r\n  \tgzip_proxied expired no-cache no-store private no_last_modified no_etag auth;\r\n  \tgzip_types application\/atom+xml application\/javascript application\/json application\/ld+json application\/manifest+json application\/rss+xml application\/vnd.geo+json application\/vnd.ms-fontobject application\/x-font-ttf application\/x-web-app-manifest+json application\/xhtml+xml application\/xml font\/opentype image\/bmp image\/svg+xml image\/x-icon text\/cache-manifest text\/css text\/plain text\/vcard text\/vnd.rim.location.xloc text\/vtt text\/x-component text\/x-cross-domain-policy;\r\n\r\n\t# Uncomment if your server is build with the ngx_pagespeed module\r\n    # This module is currently not supported.\r\n    #pagespeed off;\r\n    location \/nextcloud\/{\r\n #   \trewrite ^ \/nextcloud\/index.php$request_uri;\r\n #   \trewrite ^\/nextcloud\/(.*) \/nextcloud\/$1;\r\n    \trewrite ^ \/nextcloud\/index.php$uri;\r\n\r\n   }\r\n\r\n  \tlocation ~ ^\/nextcloud\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {\r\n    \tdeny all;\r\n  \t}\r\n\r\n    location ~ ^\/nextcloud(?:\\.|autotest|occ|issue|indie|db_|console) {\r\n    \tdeny all;\r\n  \t}\r\n\r\n  \tlocation ~ ^\/nextcloud\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v&#x5B;12]|updater\/.+|ocs-provider\/.+)\\.php(?:$|\/) {\r\n \t\tfastcgi_split_path_info ^(.+?\\.php)(\/.*)$;\r\n        include fastcgi.conf;\r\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n        #fastcgi_param SCRIPT_FILENAME \/media\/13eaa8c9-07ee-4dfc-9d1b-adfae0f0248d\/www\/nextcloud\/$fastcgi_script_name;\r\n        #fastcgi_param SCRIPT_FILENAME  $request_filename;\r\n        fastcgi_param PATH_INFO $fastcgi_path_info;\r\n        fastcgi_param HTTPS on;\r\n        #Avoid sending the security headers twice\r\n        fastcgi_param modHeadersAvailable true;\r\n       \tfastcgi_param front_controller_active true;\r\n        fastcgi_pass unix:\/var\/run\/my_sock_name.sock;\r\n        fastcgi_intercept_errors on;\r\n        fastcgi_request_buffering off;\r\n\t}\r\n    location ~ ^\/(?:updater|ocs-provider)(?:$|\/) {\r\n        try_files \/nextcloud\/$uri\/ =404;\r\n        index index.php;\r\n    }\r\n     location ~ \/nextcloud\/(?:$|\/)\\.(?:js|css|woof|svg|html|ttf|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n}\r\n\r\n    # Adding the cache control header for js and css files\r\n    # Make sure it is BELOW the PHP block\r\n  \tlocation ~ \\.(?:css|js|woff|svg|gif)$ {     \r\n        try_files $uri $uri\/ \/nextcloud\/index.php$request_uri;\r\n        add_header Cache-Control &quot;public, max-age=15778463&quot;;\r\n        # Add headers to serve security related headers  (It is intended\r\n        # to have those duplicated to the ones above)\r\n        # Before enabling Strict-Transport-Security headers please read\r\n        # into this topic first.\r\n        # add_header Strict-Transport-Security &quot;max-age=15768000;\r\n        # includeSubDomains; preload;&quot;;\r\n\t\tadd_header X-Content-Type-Options nosniff;\r\n        add_header X-XSS-Protection &quot;1; mode=block&quot;;\r\n        add_header X-Robots-Tag none;\r\n        add_header X-Download-Options noopen;\r\n        add_header X-Permitted-Cross-Domain-Policies none;\r\n        # Optional: Don't log access to assets\r\n        access_log off;\r\n        }\r\n\r\n    location ~ \\.(?:png|html|ttf|ico|jpg|jpeg)$ {\r\n       \ttry_files $uri $uri\/ \/nextcloud\/index.php$request_uri;\r\n         # Optional: Don't log access to other assets\r\n        access_log off;\r\n    }\r\n\r\n}\r\n<\/pre>\r\n\r\nFirefly\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/firefly {\r\n    root \/media\/www\/firefly-iii;\r\n\r\n    index index.php;\r\n    try_files $uri $uri\/ \/firefly\/index.php?$query_string;\r\n    autoindex on;\r\n    sendfile off;\r\n\r\n    location ~ \\.php$ {\r\n        include fastcgi.conf;\r\n        fastcgi_index index.php;\r\n        fastcgi_param SCRIPT_FILENAME $request_filename;\r\n        fastcgi_pass unix:\/var\/run\/my_sock_name.sock;\r\n    }\r\n\r\n    location = \/firefly\/favicon.ico {\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location = \/firefly\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location ~ \/firefly\/\\. {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/firefly\/(?:config)\/.*\\.php$ {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/firefly\/\\.(js|css|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n    }\r\n}<\/pre>\r\n\r\n<!-- wp:paragraph -->\r\n\r\nSo the fix needed for Webtrees was to have another Server block which was not the same as that here \/etc\/nginx\/sites-available\/openmediavault-webgui.\r\n\r\nSo I copied this file and renamed as a new file matching my site URL.\r\n\r\nAdded a symlink from \/etc\/nginx\/sites-enabled\r\n\r\nInside the new file I needed to change a few lines &#8230;..\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n#    server_name openmediavault-webgui;\r\n# change to\r\n    server_name my_new_url;\r\n\r\n#    listen &#x5B;::]:80 ipv6only=off;\r\n# change to\r\n    listen &#x5B;::]:80 default_server;\r\n\r\n#    listen &#x5B;::]:443 ipv6only=off ssl deferred;\r\n# change to\r\n    listen &#x5B;::]:443 default_server;\r\n\r\n#    include \/etc\/nginx\/openmediavault-webgui.d\/*.conf;\r\n# change to\r\n\r\n    include \/etc\/nginx\/my_new_url_file.d\/*.conf;\r\n<\/pre>\r\n\r\n<!-- wp:paragraph -->\r\n\r\nI then moved all the .conf files and added symlinks back to the opemmediavault files.\r\n\r\n\r\n\r\nI have wanted to run a number of packages so that all I needed to do was to type in the IP address of the OMV\/package_name. I also wanted to run these from a separate drive in my case mapped to \/media\/www\/package_name.\r\n\r\nI struggled with the NGINX configuration but there were clues in the way Mysql is implemented in the NGINX .conf files. I thought I would share what I did and if someone can improve on this great.\r\n\r\nFirstly worth saying I have Webmin installed which helps with the configuration and I have included the NGINX plugin for Webmin.\r\n\r\nOMV stores the config in \/etc\/nginx\/sites-available\/openmediavault-webgui. (note NGINX only uses these configurations if there is a symlink from the \/etc\/nginx\/sites-enabled folder.\r\n\r\nIf you examine this folder it has at the bottom a line which is\r\ninclude \/etc\/nginx\/openmediavault-webgui.d\/*.conf;\r\n\r\nSo this indicates we can include additional configurations in the folder \/etc\/nginx\/openmediavault-webgui.d. And sure enough there is one for Mysql &#8211; openmediavault-mysql-management-site.conf.\r\n\r\nThe PHP sock is in this line\r\nfastcgi_pass unix:\/var\/run\/php-fpm-openmediavault-mysql.sock. And you can see the shortcut to the file if you take a look in \/var\/run. The actual PHP config are held in \/etc\/php\/7.0\/fpm\/pool.d.\r\n\r\nThis is important as I did not want to change the openmediavault-webgui.d so any future changes to OMV would not overwrite my changes.\r\n\r\nThese pool.d files are written using the NGINX plugin in OMV. So if you add a Pool via the NGINX plugin it creates the pool.d folder file after first writing the config to the \/etc\/openmediavault\/config.xml. See more about this here <a href=\"https:\/\/openmediavault.readthedocs.io\/en\/latest\/development\/internaltools.html\" target=\"_blank\" rel=\"noreferrer noopener\">openmediavault.readthedocs.io\/\u2026opment\/internaltools.html<\/a>\r\n\r\nSo I figured that I could use the NGINX plugin to create the pool.d files and the associated symlink in \/var\/run and create my own nginx .conf files in \/etc\/nginx\/openmediavault-webgui.d folder by copying the openmediavault-mysql-management-site.conf and altering the link to the .sock file. i.e. changing the line fastcgi_pass unix:\/var\/run\/php-fpm-openmediavault-mysql.sock. to fastcgi_pass unix:\/var\/run\/my_new_nginx_name.sock in the copied file.\r\n\r\nI successfully added\r\n1. WordPress\r\n2. Nextcloud\r\n3. Piwigo\r\n4. Firefly\r\n5. Webtrees\r\n6. Extplorer\r\n\r\nThe config was slightly different for each one and Webtrees was particularly tricky for me and the URL was changed to have the server &#8220;openmediavault-webgui&#8221; in the file \/etc\/nginx\/sites-available\/openmediavault-webgui replacing the url after <a href=\"https:\/\/openmediavault-webgui\/webtrees\" target=\"_blank\" rel=\"noreferrer noopener\">openmediavault-webgui\/webtrees<\/a> which messed by everything. More on Webtrees lower in the post.\r\n\r\nSo for WordPress the NGINX .conf file is (similar for Piwigo and Extplorer and Webtrees)\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/wordpress {\r\n    alias \/media\/13eaa8c9-07ee-4dfc-9d1b-adfae0f0248d\/www\/wordpress;\r\n\r\n    add_header Content-Security-Policy &quot;default-src 'self' https: data: 'unsafe-inline' 'unsafe-eval';&quot; always;\r\n\r\n    index index.php;\r\n    try_files $uri $uri\/ index.php;\r\n\r\n    location ~ \\.php$ {\r\n        include fastcgi.conf;\r\n        fastcgi_index index.php;\r\n        fastcgi_param SCRIPT_FILENAME $request_filename;\r\n       fastcgi_pass unix:\/var\/run\/fpm-19e311b1-25e1-4257-8dbc-d49c5ec59015.sock;\r\n       #fastcgi_pass unix:\/var\/run\/php5-fpm.sock;\r\n    }\r\n\r\n    location = \/wordpress\/favicon.ico {\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location = \/wordpress\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location ~ \/wordpress\/\\. {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/wordpress\/(?:config)\/.*\\.php$ {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/wordpress\/\\.(js|css|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n    }\r\n}\r\n\r\n<\/pre>\r\n\r\n<!-- wp:paragraph -->\r\n\r\nNext Cloud &#8211; harder as needed to use root and not Alias\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/nextcloud {\r\n\troot \/media\/www;\r\n\r\n    add_header X-Content-Type-Options nosniff;\r\n    add_header X-XSS-Protection &quot;1; mode=block&quot;;\r\n    add_header X-Robots-Tag none;\r\n    add_header X-Download-Options noopen;\r\n    add_header X-Permitted-Cross-Domain-Policies none;\r\n    add_header Strict-Transport-Security &quot;max-age=15768000;includeSubDomains&quot;;&lt;br \/&gt;\r\n    location = \/nextcloud\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n\r\n\tlocation = \/nextcloud\/.well-known\/carddav {\r\n        return 301 $scheme:\/\/$host\/nextcloud\/remote.php\/dav;\r\n    }\r\n\r\n    location = \/nextcloud\/.well-known\/caldav {\r\n        return 301 $scheme:\/\/$host\/nextcloud\/remote.php\/dav;\r\n    }\r\n\r\n    location \/nextcloud\/.well-known\/acme-challenge { \r\n    }\r\n\r\n\r\n\trewrite_log on;\r\n\r\n\r\n\t# set max upload size\r\n    client_max_body_size 512M;\r\n  \tfastcgi_buffers 64 4K;\r\n\r\n# Enable gzip but do not remove ETag headers\r\n    gzip on;\r\n  \tgzip_vary on;\r\n  \tgzip_comp_level 4;\r\n  \tgzip_min_length 256;\r\n  \tgzip_proxied expired no-cache no-store private no_last_modified no_etag auth;\r\n  \tgzip_types application\/atom+xml application\/javascript application\/json application\/ld+json application\/manifest+json application\/rss+xml application\/vnd.geo+json application\/vnd.ms-fontobject application\/x-font-ttf application\/x-web-app-manifest+json application\/xhtml+xml application\/xml font\/opentype image\/bmp image\/svg+xml image\/x-icon text\/cache-manifest text\/css text\/plain text\/vcard text\/vnd.rim.location.xloc text\/vtt text\/x-component text\/x-cross-domain-policy;\r\n\r\n\t# Uncomment if your server is build with the ngx_pagespeed module\r\n    # This module is currently not supported.\r\n    #pagespeed off;\r\n    location \/nextcloud\/{\r\n #   \trewrite ^ \/nextcloud\/index.php$request_uri;\r\n #   \trewrite ^\/nextcloud\/(.*) \/nextcloud\/$1;\r\n    \trewrite ^ \/nextcloud\/index.php$uri;\r\n\r\n   }\r\n\r\n  \tlocation ~ ^\/nextcloud\/(?:build|tests|config|lib|3rdparty|templates|data)\/ {\r\n    \tdeny all;\r\n  \t}\r\n\r\n    location ~ ^\/nextcloud(?:\\.|autotest|occ|issue|indie|db_|console) {\r\n    \tdeny all;\r\n  \t}\r\n\r\n  \tlocation ~ ^\/nextcloud\/(?:index|remote|public|cron|core\/ajax\/update|status|ocs\/v&#x5B;12]|updater\/.+|ocs-provider\/.+)\\.php(?:$|\/) {\r\n \t\tfastcgi_split_path_info ^(.+?\\.php)(\/.*)$;\r\n        include fastcgi.conf;\r\n        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;\r\n        #fastcgi_param SCRIPT_FILENAME \/media\/13eaa8c9-07ee-4dfc-9d1b-adfae0f0248d\/www\/nextcloud\/$fastcgi_script_name;\r\n        #fastcgi_param SCRIPT_FILENAME  $request_filename;\r\n        fastcgi_param PATH_INFO $fastcgi_path_info;\r\n        fastcgi_param HTTPS on;\r\n        #Avoid sending the security headers twice\r\n        fastcgi_param modHeadersAvailable true;\r\n       \tfastcgi_param front_controller_active true;\r\n        fastcgi_pass unix:\/var\/run\/my_sock_name.sock;\r\n        fastcgi_intercept_errors on;\r\n        fastcgi_request_buffering off;\r\n\t}\r\n    location ~ ^\/(?:updater|ocs-provider)(?:$|\/) {\r\n        try_files \/nextcloud\/$uri\/ =404;\r\n        index index.php;\r\n    }\r\n     location ~ \/nextcloud\/(?:$|\/)\\.(?:js|css|woof|svg|html|ttf|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n}\r\n\r\n    # Adding the cache control header for js and css files\r\n    # Make sure it is BELOW the PHP block\r\n  \tlocation ~ \\.(?:css|js|woff|svg|gif)$ {     \r\n        try_files $uri $uri\/ \/nextcloud\/index.php$request_uri;\r\n        add_header Cache-Control &quot;public, max-age=15778463&quot;;\r\n        # Add headers to serve security related headers  (It is intended\r\n        # to have those duplicated to the ones above)\r\n        # Before enabling Strict-Transport-Security headers please read\r\n        # into this topic first.\r\n        # add_header Strict-Transport-Security &quot;max-age=15768000;\r\n        # includeSubDomains; preload;&quot;;\r\n\t\tadd_header X-Content-Type-Options nosniff;\r\n        add_header X-XSS-Protection &quot;1; mode=block&quot;;\r\n        add_header X-Robots-Tag none;\r\n        add_header X-Download-Options noopen;\r\n        add_header X-Permitted-Cross-Domain-Policies none;\r\n        # Optional: Don't log access to assets\r\n        access_log off;\r\n        }\r\n\r\n    location ~ \\.(?:png|html|ttf|ico|jpg|jpeg)$ {\r\n       \ttry_files $uri $uri\/ \/nextcloud\/index.php$request_uri;\r\n         # Optional: Don't log access to other assets\r\n        access_log off;\r\n    }\r\n\r\n}\r\n<\/pre>\r\n\r\nFirefly\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nlocation \/firefly {\r\n    root \/media\/www\/firefly-iii;\r\n\r\n    index index.php;\r\n    try_files $uri $uri\/ \/firefly\/index.php?$query_string;\r\n    autoindex on;\r\n    sendfile off;\r\n\r\n    location ~ \\.php$ {\r\n        include fastcgi.conf;\r\n        fastcgi_index index.php;\r\n        fastcgi_param SCRIPT_FILENAME $request_filename;\r\n        fastcgi_pass unix:\/var\/run\/my_sock_name.sock;\r\n    }\r\n\r\n    location = \/firefly\/favicon.ico {\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location = \/firefly\/robots.txt {\r\n        allow all;\r\n        access_log off;\r\n        log_not_found off;\r\n    }\r\n\r\n    location ~ \/firefly\/\\. {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/firefly\/(?:config)\/.*\\.php$ {\r\n        deny all;\r\n    }\r\n\r\n    location ~* \/firefly\/\\.(js|css|png|jpg|jpeg|gif|ico)$ {\r\n        expires max;\r\n        log_not_found off;\r\n    }\r\n}<\/pre>\r\n\r\n<!-- wp:paragraph -->\r\n\r\nSo the fix needed for Webtrees was to have another Server block which was not the same as that here \/etc\/nginx\/sites-available\/openmediavault-webgui.\r\n\r\nSo I copied this file and renamed as a new file matching my site URL.\r\n\r\nAdded a symlink from \/etc\/nginx\/sites-enabled\r\n\r\nInside the new file I needed to change a few lines &#8230;..\r\n\r\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\n#    server_name openmediavault-webgui;\r\n# change to\r\n    server_name my_new_url;\r\n\r\n#    listen &#x5B;::]:80 ipv6only=off;\r\n# change to\r\n    listen &#x5B;::]:80 default_server;\r\n\r\n#    listen &#x5B;::]:443 ipv6only=off ssl deferred;\r\n# change to\r\n    listen &#x5B;::]:443 default_server;\r\n\r\n#    include \/etc\/nginx\/openmediavault-webgui.d\/*.conf;\r\n# change to\r\n\r\n    include \/etc\/nginx\/my_new_url_file.d\/*.conf;\r\n<\/pre>\r\n\r\n<!-- wp:paragraph -->\r\n\r\nI then moved all the .conf files and added symlinks back to the opemmediavault files.","protected":false},"excerpt":{"rendered":"<p>So this is how I have decided to configure NGINX to get different packages working under OMV. So the fix needed for Webtrees was to have another Server block which was not the same as that here \/etc\/nginx\/sites-available\/openmediavault-webgui. So I copied this file and renamed as a new file matching my site URL. Added a &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;OMV &#8211; Changes to NGINX for self hosted sites&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[2,4],"tags":[],"class_list":["post-63","post","type-post","status-publish","format-standard","hentry","category-linux-nas","category-wordpress"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.4 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>OMV - Changes to NGINX for self hosted sites - Michael Naylor<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\" \/>\n<meta property=\"og:locale\" content=\"en_GB\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"OMV - Changes to NGINX for self hosted sites - Michael Naylor\" \/>\n<meta property=\"og:description\" content=\"So this is how I have decided to configure NGINX to get different packages working under OMV. So the fix needed for Webtrees was to have another Server block which was not the same as that here \/etc\/nginx\/sites-available\/openmediavault-webgui. So I copied this file and renamed as a new file matching my site URL. Added a &hellip; Continue reading &quot;OMV &#8211; Changes to NGINX for self hosted sites&quot;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\" \/>\n<meta property=\"og:site_name\" content=\"Michael Naylor\" \/>\n<meta property=\"article:published_time\" content=\"2018-08-09T16:59:36+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-09-18T11:07:25+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@mjnaylor\" \/>\n<meta name=\"twitter:site\" content=\"@mjnaylor\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Estimated reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/af4669b3ebc6341a4c069ea3381181ad\"},\"headline\":\"OMV &#8211; Changes to NGINX for self hosted sites\",\"datePublished\":\"2018-08-09T16:59:36+00:00\",\"dateModified\":\"2018-09-18T11:07:25+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\"},\"wordCount\":1335,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/22e1ad271f44b7f71c8e1fbf982dcbe5\"},\"articleSection\":[\"Linux NAS\",\"Wordpress\"],\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\",\"url\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\",\"name\":\"OMV - Changes to NGINX for self hosted sites - Michael Naylor\",\"isPartOf\":{\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#website\"},\"datePublished\":\"2018-08-09T16:59:36+00:00\",\"dateModified\":\"2018-09-18T11:07:25+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#breadcrumb\"},\"inLanguage\":\"en-GB\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"OMV &#8211; Changes to NGINX for self hosted sites\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#website\",\"url\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/\",\"name\":\"Michael Naylor\",\"description\":\"Things which interest me.\",\"publisher\":{\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/22e1ad271f44b7f71c8e1fbf982dcbe5\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-GB\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/22e1ad271f44b7f71c8e1fbf982dcbe5\",\"name\":\"Michael Naylor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/2aa27338833977999b7baeb1ee9e723e?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/2aa27338833977999b7baeb1ee9e723e?s=96&d=mm&r=g\",\"caption\":\"Michael Naylor\"},\"logo\":{\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/image\/\"},\"sameAs\":[\"http:\/\/www.thenaylors.co.uk\/wordpress\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/af4669b3ebc6341a4c069ea3381181ad\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-GB\",\"@id\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/71e280edd2a51a46cd545022235cdf48?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/71e280edd2a51a46cd545022235cdf48?s=96&d=mm&r=g\",\"caption\":\"admin\"},\"url\":\"https:\/\/www.thenaylors.co.uk\/wordpress\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"OMV - Changes to NGINX for self hosted sites - Michael Naylor","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/","og_locale":"en_GB","og_type":"article","og_title":"OMV - Changes to NGINX for self hosted sites - Michael Naylor","og_description":"So this is how I have decided to configure NGINX to get different packages working under OMV. So the fix needed for Webtrees was to have another Server block which was not the same as that here \/etc\/nginx\/sites-available\/openmediavault-webgui. So I copied this file and renamed as a new file matching my site URL. Added a &hellip; Continue reading \"OMV &#8211; Changes to NGINX for self hosted sites\"","og_url":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/","og_site_name":"Michael Naylor","article_published_time":"2018-08-09T16:59:36+00:00","article_modified_time":"2018-09-18T11:07:25+00:00","author":"admin","twitter_card":"summary_large_image","twitter_creator":"@mjnaylor","twitter_site":"@mjnaylor","twitter_misc":{"Written by":"admin","Estimated reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#article","isPartOf":{"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/"},"author":{"name":"admin","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/af4669b3ebc6341a4c069ea3381181ad"},"headline":"OMV &#8211; Changes to NGINX for self hosted sites","datePublished":"2018-08-09T16:59:36+00:00","dateModified":"2018-09-18T11:07:25+00:00","mainEntityOfPage":{"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/"},"wordCount":1335,"commentCount":0,"publisher":{"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/22e1ad271f44b7f71c8e1fbf982dcbe5"},"articleSection":["Linux NAS","Wordpress"],"inLanguage":"en-GB","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/","url":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/","name":"OMV - Changes to NGINX for self hosted sites - Michael Naylor","isPartOf":{"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#website"},"datePublished":"2018-08-09T16:59:36+00:00","dateModified":"2018-09-18T11:07:25+00:00","breadcrumb":{"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#breadcrumb"},"inLanguage":"en-GB","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/omv-changes-to-nginx-for-self-hosted-sites\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.thenaylors.co.uk\/wordpress\/"},{"@type":"ListItem","position":2,"name":"OMV &#8211; Changes to NGINX for self hosted sites"}]},{"@type":"WebSite","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#website","url":"https:\/\/www.thenaylors.co.uk\/wordpress\/","name":"Michael Naylor","description":"Things which interest me.","publisher":{"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/22e1ad271f44b7f71c8e1fbf982dcbe5"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.thenaylors.co.uk\/wordpress\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-GB"},{"@type":["Person","Organization"],"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/22e1ad271f44b7f71c8e1fbf982dcbe5","name":"Michael Naylor","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/2aa27338833977999b7baeb1ee9e723e?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2aa27338833977999b7baeb1ee9e723e?s=96&d=mm&r=g","caption":"Michael Naylor"},"logo":{"@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/image\/"},"sameAs":["http:\/\/www.thenaylors.co.uk\/wordpress"]},{"@type":"Person","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/af4669b3ebc6341a4c069ea3381181ad","name":"admin","image":{"@type":"ImageObject","inLanguage":"en-GB","@id":"https:\/\/www.thenaylors.co.uk\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/71e280edd2a51a46cd545022235cdf48?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/71e280edd2a51a46cd545022235cdf48?s=96&d=mm&r=g","caption":"admin"},"url":"https:\/\/www.thenaylors.co.uk\/wordpress\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/posts\/63","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/comments?post=63"}],"version-history":[{"count":14,"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/posts\/63\/revisions"}],"predecessor-version":[{"id":1962,"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/posts\/63\/revisions\/1962"}],"wp:attachment":[{"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/media?parent=63"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/categories?post=63"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.thenaylors.co.uk\/wordpress\/wp-json\/wp\/v2\/tags?post=63"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}