IlPuntoTecnico

Hardware e Software => Connessioni ADSL/VDSL/FTTC => Topic aperto da: uomoukko - 04 Gennaio 2022, 20:16

Titolo: Port redirect su NGINX di Technicolor
Inserito 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
Codice: [Seleziona]
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
Codice: [Seleziona]
<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
Titolo: Re:Port redirect su NGINX di Technicolor
Inserito da: uomoukko - 01 Febbraio 2022, 17:52
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:
Codice: [Seleziona]
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.

Titolo: Re:Port redirect su NGINX di Technicolor
Inserito da: FrancYescO - 02 Febbraio 2022, 16:23
Se non mi sbaglio viene utilizzato stratagemma simile anche nella GUI ufficiale, senza quella direttiva return non credo puoi fare altrimenti.
Titolo: Re:Port redirect su NGINX di Technicolor
Inserito da: uomoukko - 12 Febbraio 2022, 11:40
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"

Titolo: Re:Port redirect su NGINX di Technicolor
Inserito da: FrancYescO - 14 Febbraio 2022, 16:29
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
Titolo: Re:Port redirect su NGINX di Technicolor
Inserito da: uomoukko - 23 Febbraio 2022, 22:43
Lasciando perdere le cose complesse, torno all'argomento principale ovvero il redirect.
Secondo voi è possibile fare un redirect generico? cioè invece di scrivere
Codice: [Seleziona]
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
Codice: [Seleziona]
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
Codice: [Seleziona]
return ngx.redirect("https://" .. ngx.var.host .. ngx.var.request_uri, 301)beh secondo voi è possibile o mi devo accontentare del sistema usato prima?
Titolo: Re:Port redirect su NGINX di Technicolor
Inserito da: FrancYescO - 24 Febbraio 2022, 02:10
Prova ngx.req.get_headers()["Host"] e ngx.var.uri

https://openresty-reference.readthedocs.io/en/latest/Lua_Nginx_API/