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.