IlPuntoTecnico
Hardware e Software => Connessioni ADSL/VDSL/FTTC => Topic aperto da: uomoukko - 04 Gennaio 2022, 20:16
-
Posto qui questo messaggio perché - anche se è relativo al modem DGA4130
penso possa andare anche per altri modem technicolor.
Vorrei ridirigere la porta http-80 sulla https-443 usando il server nginx di default, nginx 1.12.1
senza quindi ricompilare nulla.
La cosa sarebbe semplicissima con la direttiva return,
quindi come dice la documentazione basterebbe
server {
listen 80;
return 301 https://miodominio.com$request_uri;
}
Ma la return non è presente nel mio server, purtroppo
Attualmente ho risolto in modo sporco mettendo nell'index.html del server http-80
<META HTTP-EQUIV="refresh" content="3; URL='https://miodominio.com'" />
Ma siccome il server capisce anche comandi lua, non sarebbe possibile inserire
un qualcosa tipo content_by_lua e un ngx.redirect("https://miodominio.com")
ovviamente senza usare il return che non possiedo?
Grazie per l'attenzione
-
Mi rispondo da solo, avendo trovato la soluzione, sperando che
possa essere utile a qualcuno di voi.
Per ridirigere dalla porta http alla porta https il nostro server nginx
che non ha la direttiva return e però ha lua, basterà scrivere:
location / {
content_by_lua '
return ngx.redirect("https://miodominio.com",301)
';
}
N.B. questo particolare return è gestito da lua !!
301 è l'errore tipico che viene restituito con una redirect
301=redirect permanente mentre 302=redirect temporanea.
-
Se non mi sbaglio viene utilizzato stratagemma simile anche nella GUI ufficiale, senza quella direttiva return non credo puoi fare altrimenti.
-
Mi faccio una nuova domanda:
So benissimo che nginx non è adatto per gestire php, e nemmeno cgi-bin
né mi interesserebbe installare php per esporre il mio sito a qualche vulnerabilità
però mi piacerebbe poter gestire semplici pagine dinamiche, e adesso
che conosco il LUA mi chiedo se ciò sia possibile.
Sto pensando a qualcosa che mi permetta di estrarre i parametri
da un url GET http://miosito.com/prog/test?user=demo&y=200
e che mi permetta di rispondere con una pagina dinamica personalizzata
tipo banalmente USER:demo Y:200
Premetto che il programma di estrazione parametri da un GET
lo so fare in C, però secondo voi potrei far questo usando LUA/openresty
o un qualche altro sistema presente nel nostro amato modem?
La cosa dovrebbe essere possibile perché comunque i Form nelle pagine
dei parametri del modem sono presenti, quindi un qualche meccanismo
di interazione con l'utente ci deve essere.
si ho capito cosa mi state per rispondere:
"guardati i programmi *.lp in /www/docroot"
-
si ho capito cosa mi state per rispondere:
"guardati i programmi *.lp in /www/docroot"
:D
qui un esempio banale
https://raw.githubusercontent.com/Ansuel/tch-nginx-gui/master/decompressed/gui_file/www/docroot/ajax/get_card.lua
-
Lasciando perdere le cose complesse, torno all'argomento principale ovvero il redirect.
Secondo voi è possibile fare un redirect generico? cioè invece di scrivere
content by lua '
return ngx.redirect("https://miodominio.com",301)
';a me piacerebbe poter scrivere un redirect dominio-agnostico che mi
cambia soltanto http con https e basta, tipo
content by lua '
return ngx.redirect("https://"$host$request_uri, 301)
';ma non va. ho provato ad usare l'operatore di concatenamento stringhe ".."
e/o anche le variabili ngx.var.host e ngx.var.request_uri quindi non va neppure
return ngx.redirect("https://" .. ngx.var.host .. ngx.var.request_uri, 301)beh secondo voi è possibile o mi devo accontentare del sistema usato prima?
-
Prova ngx.req.get_headers()["Host"] e ngx.var.uri
https://openresty-reference.readthedocs.io/en/latest/Lua_Nginx_API/