Configuração do Nginx no TrueNAS: Alteração da porta para 8080 e montagem de diretório na porta 80

Nesta configuração, o ojbetivo é redirecionar a porta do Nginx no TrueNAS para 8080, permitindo que a interface de administração seja acessada por essa porta, e configurar um servidor adciional na porta 80 para compartilhar um diretório local com navegação de arquivos ativada.

O arquivo de configuração do Nginx no TrueNAS está localizado em /etc/local/nginx/nginx.conf. Abaixo está uma versão modificada do arquivo, onde a porta padrão foi alterada para 8080 e um novo bloco de servidor foi adicionado para a porta 80.

#
#    Configuração do Nginx para TrueNAS
#

    load_module /usr/local/libexec/nginx/ngx_http_uploadprogress_module.so;

    user www www;
    worker_processes 1;

    events {
        worker_connections 1024;
    }

    http {
        include mime.types;
        default_type application/octet-stream;

        # Tipos de conteúdo para compressão gzip
        gzip_types
            text/plain
            text/css
            text/js
            text/xml
            text/javascript
            application/javascript
            application/x-javascript
            application/json
            application/xml
            application/rss+xml
            image/svg+xml;

        # Reservar espaço para rastreamento de uploads
        upload_progress proxied 1m;

        sendfile on;
        client_max_body_size 1000m;

        keepalive_timeout 65;

        # Desativar tokens do servidor por segurança
        server_tokens off;

        gzip on;
        client_body_temp_path /var/tmp/firmware;

        error_log syslog:server=unix:/var/run/log,nohostname;
        access_log /var/log/nginx/access.log;

        # Bloco de servidor para compartilhamento de diretório na porta 80
        server {
            listen 80;
            server_name localhost;
            root /mnt/nas01;

            # Definir codificação para UTF-8
            charset utf-8;

            # Habilitar navegação de diretórios
            autoindex on;

            location / {
                autoindex_exact_size off;
                autoindex_localtime on;
            }
        }

        # Bloco de servidor principal do TrueNAS, agora na porta 8080
        server {
            server_name localhost;
            listen 0.0.0.0:443 default_server ssl http2;
            listen [::]:443 default_server ssl http2;

            ssl_certificate "/etc/certificates/freenas_default.crt";
            ssl_certificate_key "/etc/certificates/freenas_default.key";
            ssl_dhparam "/data/dhparam.pem";

            ssl_session_timeout 120m;
            ssl_session_cache shared:ssl:16m;

            ssl_protocols TLSv1.2 TLSv1.3;
            ssl_prefer_server_ciphers on;
            ssl_ciphers EECDH+ECDSA+AESGCM:EECDH+aRSA+AESGCM:EECDH+ECDSA:EDH+aRSA:EECDH:!RC4:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!SRP:!DSS:!SHA1:!SHA256:!SHA384;
            add_header Strict-Transport-Security max-age=0;

            # Configuração da porta alternativa 8080
            listen 0.0.0.0:8080;
            listen [::]:8080;

            # Cabeçalhos de segurança
            add_header X-Content-Type-Options nosniff;
            add_header X-XSS-Protection "1";

            location / {
                rewrite ^.* $scheme://$http_host/ui/ redirect;
            }

            location /progress {
                report_uploads proxied;
            }

            location /api/docs {
                proxy_pass http://127.0.0.1:6000/api/docs;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header X-Scheme $scheme;
                proxy_set_header X-Script-Name /api/docs;
            }

            location /api/docs/restful/static {
                alias /usr/local/www/swagger-ui/node_modules/swagger-ui-dist;
            }

            location /ui {
                if ($request_method ~ ^POST$) {
                    proxy_pass http://127.0.0.1:6000;
                }
                try_files $uri $uri/ /index.html =404;
                alias /usr/local/www/webui;
                add_header Cache-Control "must-revalidate";
                add_header Etag "TrueNAS-12.0-RELEASE";
            }

            location /websocket {
                proxy_pass http://127.0.0.1:6000/websocket;
                proxy_http_version 1.1;
                proxy_set_header X-Real-Remote-Addr $remote_addr;
                proxy_set_header X-Real-Remote-Port $remote_port;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
            }

            location /websocket/shell {
                proxy_pass http://127.0.0.1:6000/_shell;
                proxy_http_version 1.1;
                proxy_set_header X-Real-Remote-Addr $remote_addr;
                proxy_set_header X-Real-Remote-Port $remote_port;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection "upgrade";
                proxy_send_timeout 7d;
                proxy_read_timeout 7d;
            }

            location /api/v2.0 {
                proxy_pass http://127.0.0.1:6000;
                proxy_http_version 1.1;
                proxy_set_header X-Real-Remote-Addr $remote_addr;
                proxy_set_header X-Real-Remote-Port $remote_port;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
            }

            location /_download {
                proxy_pass http://127.0.0.1:6000;
                proxy_http_version 1.1;
                proxy_set_header X-Real-Remote-Addr $remote_addr;
                proxy_set_header X-Real-Remote-Port $remote_port;
                proxy_read_timeout 10m;
            }

            location /_upload {
                client_max_body_size 0;
                proxy_pass http://127.0.0.1:6000;
                proxy_request_buffering off;
                proxy_http_version 1.1;
                proxy_set_header X-Real-Remote-Addr $remote_addr;
                proxy_set_header X-Real-Remote-Port $remote_port;
            }

            location /images {
                alias /var/db/system/webui/images;
            }

            location /_plugins {
                proxy_pass http://127.0.0.1:6000/_plugins;
                proxy_http_version 1.1;
                proxy_set_header X-Real-Remote-Addr $remote_addr;
                proxy_set_header X-Real-Remote-Port $remote_port;
                proxy_set_header Host $host;
                proxy_set_header X-Forwarded-For $remote_addr;
            }

            error_page 500 502 503 504 /50x.html;
            location = /50x.html {
                root /usr/local/www/nginx-dist;
            }
        }
    }

Salve a configuração acima em um arquivo temperário, por exemplo, /root/nginx.conf.bak. Em seguida, crie um script para aplicar as alterações, já que o TrueNAS tende a redefinir a configuração do Nginx após reinicializações.

#!/bin/bash
# Script para copiar a configuração personalizada e recarregar o Nginx
cp /root/nginx.conf.bak /etc/local/nginx/nginx.conf
nginx -s reload

Torne o script executável com o comando chmod +x /root/nginx.conf.bak. Após isso, você pode executar o script sempre que necessário para restaurar as configurações após reinicializações do sistema.

Esta configuração garante que o TrueNAS fique acessível na porta 8080 para a interface de gerenciamento, enquanto a porta 80 serve ao diretório /mnt/nas01 com visualização de arquivos habilitada.

Tags: TrueNAS nginx configuração de rede Portas TCP Compartilhamento de Arquivos

Publicado em 6-20 06:02