server {
    listen 80 default_server;
    listen [::]:80 default_server;

    #root /var/www/localhost/html;
    root /opt/SIA/web/main;

    index index.html index.htm;

    server_name _;

    # redirect server error pages to the static page /50x.html
    error_page 500 502 503 504 /50x.html;

    # Enable directory listing for / (equivalent to Options Indexes)
    location / {
        autoindex on;
        try_files $uri $uri/ =404;
    }

   location /api/ {
        alias /opt/SIA/api/main/;
        index index.php;
        autoindex off;

        # Fix PHP execution with alias + correct SCRIPT_FILENAME
        location ~ ^/api/(.*\.php)$ {
            include fastcgi_params;
            fastcgi_pass 127.0.0.1:9000;

            # Match physical path correctly when using alias
            fastcgi_param SCRIPT_FILENAME /opt/SIA/api/main/$1;

            fastcgi_param PHP_VALUE "
                upload_max_filesize=100M
                post_max_size=100M
                memory_limit=-1
                max_execution_time=600
                display_errors=On
                display_startup_errors=On
                zlib.output_compression=On
            ";

        }

        access_log /var/log/nginx/debug.log debug_log;


        # Gzip support
        gzip_static on;
        gzip on;
        gzip_types text/plain text/html text/xml text/css application/xml application/xhtml+xml application/rss+xml application/javascript application/x-javascript application/json;

        # Precompressed JS/CSS
        location ~* \.(css|js)$ {
            gzip_static on;
            add_header Vary Accept-Encoding;
        }

        # --- All your rewrite rules (already correct) ---
        rewrite ^/api/mappings/?$ /api/mapping.php last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/items/(.+)/mappings/?$ /api/mapping.php?plugin=$1&device=$2&item=$3 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/mappings/(.+)/messages/?$ /api/mapping_messages.php?plugin=$1&device=$2&mapping=$3 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/mappings/?$ /api/mapping.php?plugin=$1&device=$2 last;
        rewrite ^/api/plugins/(.+)/mappings/(.+)/messages/?$ /api/mapping_messages.php?plugin=$1&mapping=$2 last;
        rewrite ^/api/plugins/(.+)/mappings/?$ /api/mapping.php?plugin=$1 last;
        rewrite ^/api/mapping_groups/(.+)/mappings/?$ /api/mapping.php?mapping_group=$1 last;

        rewrite ^/api/mapping_groups/(.+)/remain/?$ /api/mapping_groups.php?mapping_group=$1&remain=true last;
        rewrite ^/api/mapping_groups/(.+)/?$ /api/mapping_groups.php?mapping_group=$1 last;
        rewrite ^/api/mapping_groups/?$ /api/mapping_groups.php last;

        rewrite ^/api/plugins/(.+)/devices/(.+)/items/?$ /api/item.php?plugin=$1&device=$2 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/items/(.+)/write/?$ /api/data.php?plugin=$1&device=$2&item=$3 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/items/(.+)/data/?$ /api/data.php?plugin=$1&device=$2&item=$3 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/items/(.+)/read/?$ /api/read.php?plugin=$1&device=$2&item=$3 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/items/(.+)/(.+)?$ /api/item.php?plugin=$1&device=$2&item=$3 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/items/(.+)?$ /api/item.php?plugin=$1&device=$2&item=$3 last;

        rewrite ^/api/plugins/(.+)/devices/(.+)/files/?$ /api/file.php?plugin=$1&device=$2 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/files/(.+)/?$ /api/file.php?plugin=$1&device=$2&file=$3 last;
        rewrite ^/api/plugins/(.+)/files/(.+)/?$ /api/file.php?plugin=$1&file=$2 last;
        rewrite ^/api/plugins/(.+)/files/?$ /api/file.php?plugin=$1 last;
        rewrite ^/api/files/(.+)/?$ /api/file.php?file=$1 last;
        rewrite ^/api/files/?$ /api/file.php last;

        rewrite ^/api/plugins/(.+)/devices/(.+)/data/?$ /api/data.php?plugin=$1&device=$2 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/data/(.+)?$ /api/data.php?plugin=$1&device=$2 last;
        rewrite ^/api/plugins/(.+)/devices/data/?$ /api/data.php?plugin=$1 last;
        rewrite ^/api/plugins/(.+)/data/?$ /api/data.php?plugin=$1 last;

        rewrite ^/api/plugins/(.+)/devices/?$ /api/device.php?plugin=$1 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/read/?$ /api/read.php?plugin=$1&device=$2 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/(.+)?$ /api/device.php?plugin=$1&device=$2 last;
        rewrite ^/api/plugins/(.+)/devices/(.+)/?$ /api/device.php?plugin=$1&device=$2 last;
        rewrite ^/api/devices/?$ /api/device.php last;

        rewrite ^/api/plugins/(.+)/?$ /api/plugin.php?plugin=$1 last;
        rewrite ^/api/plugins/?$ /api/plugin.php last;

        rewrite ^/api/networks/(.+)/?$ /api/network.php?network=$1 last;
        rewrite ^/api/networks/?$ /api/network.php last;

        rewrite ^/api/settings/(.+)/?$ /api/setting.php?setting=$1 last;
        rewrite ^/api/settings/?$ /api/setting.php last;

        rewrite ^/api/setup/(.+)/?$ /api/setup.php?option=$1 last;
        rewrite ^/api/setup/?$ /api/setup.php last;

        rewrite ^/api/users/(.+)/?$ /api/user.php?username=$1 last;
        rewrite ^/api/users/?$ /api/user.php last;

        rewrite ^/api/licenses/(.+)/?$ /api/license.php?license=$1 last;
        rewrite ^/api/licenses/?$ /api/license.php last;

        rewrite ^/api/versions/?$ /api/version.php last;
        rewrite ^/api/import/?$ /api/import.php last;

        rewrite ^/api/updater/(.+)/?$ /api/updater.php?mode=$1 last;
        rewrite ^/api/updater/?$ /api/updater.php last;

        rewrite ^/api/tools/digicert_one_iot_trust/?$ /api/digicert_one_iot_trust.php last;
        rewrite ^/api/tools/systemresources/?$ /api/systemresources.php last;
        rewrite ^/api/tools/(.+)/?$ /api/tools.php?service=$1 last;
        rewrite ^/api/tools/?$ /api/tools.php last;

        rewrite ^/api/containers/install/?$ /api/containers.php?install last;
        rewrite ^/api/containers/uninstall/?$ /api/containers.php?uninstall last;
        rewrite ^/api/containers/(.+)/start/?$ /api/containers.php?container=$1&command=start last;
        rewrite ^/api/containers/(.+)/stop/?$ /api/containers.php?container=$1&command=stop last;
        rewrite ^/api/containers/(.+)/?$ /api/containers.php?container=$1 last;

        rewrite ^/api/remote_access/secomea/?$ /api/secomea.php last;
        rewrite ^/api/secomea/?$ /api/secomea.php last;
        rewrite ^/api/remote_access/netbird/start/?$ /api/netbird.php?start last;
        rewrite ^/api/remote_access/netbird/stop/?$ /api/netbird.php?stop last;
        rewrite ^/api/remote_access/netbird/?$ /api/netbird.php last;
        rewrite ^/api/netbird/?$ /api/netbird.php last;

        rewrite ^/api/soft_restart$ /api/restart.php?soft last;
        rewrite ^/api/hard_restart$ /api/restart.php?hard last;

        # Generic fallback e.g. init => init.php
        rewrite ^/api/([a-z]+)/?$ /api/$1.php last;
    }


    location /logs/ {
        alias /opt/SIA/log/;
        autoindex on;
        try_files $uri $uri/ =404;
    }

    location /error_logs/ {
        alias /opt/SIA/error_logs/;
        autoindex on;
        try_files $uri $uri/ =404;
    }

    location /tmp/ {
        alias /opt/SIA/tools/updater/tmp/;
        autoindex on;
        try_files $uri $uri/ =404;
    }

    location /files/ {
        alias /opt/SIA/web/files/;
        autoindex on;
        try_files $uri $uri/ =404;
    }
}