QNAP [ QNginx + PHP-FPM ] [ 1.12.2 ] Web Server and more [embedded]

Celena-007 a dit:
en utilisant un virtualhost nginx tu peut renvoyer un 443 vers l'ip d'eth:443 ou autres ports (je part du principe que le routeur renvoit 80 et 443 sur eth2)
Est-ce que tu peux mieux expliquer comment tu ferais?

En vérité, mon problème est que depuis le boulot je ne peux que me connecter à des sites (et donc aux services de mon NAS) qui se trouvent sur les portes 80 ou 443. Pour cette raison, je ne peux pas rendre accessible QTS (en HTTPS) sur une autre porte 443, ce qui comporte que je ne peux plus utiliser cette porte pour les reverse proxy en HTTPS.

Utiliser deux interfaces eth est la solution en interne (dans le LAN), mais pas en externe.

La seule solution serait de créer un reverse proxy pour tout accèss à QTS (qui est rendu accessible en https à une porte autre que 443), ce qui par contre pourrait ne pas fonctionner pour certains services (e.g. Movie Station) ou demander trop de resources pour le Web Server (moi j'utilise Apache, mais avec Nginx ça devrait être pareil).
 
Oui je peut t'expliquer sans problème.
J'ai vue ton message au boulot donc je pourrai t'expliquer que ce soir. J'essayerai de faire un tuto si sa marche avec toi et que c'est ce que tu veut :)

Envoyé de mon ONE A2003 en utilisant Tapatalk
 
Merci!! Le problème du boulot par contre est que le pare-feu / proxy n'autorise que un accès au sites disponibles sur portes standard.

Sent from mobile using TapaTalk
 
Pour l'instant j'y suis presque
J'arrive a afficher la page de connexion.

je précise que pour que cela soit compatible tous le monde je n'utilise pas mon noms de domaine (trop easy car sous domaine et c'est direct); j'utilise : http://IP_WAN/qts/ et https://IP_WAN/qts/

Maintenant je ne peut pas me connecter au QTS (login incorect) car surement les POST ne sont pas bien rediriger
 
Voila la solution que j'ai trouver et parfaitement fonctionnelle :D

accès via l'IP WAN (http://IP_WAN/) directement => accès au fonction qts (file, down, video ...)
accès via l'IP WAN ou Domaine (sous Domaine : http://*.example.com) accès a des service comme pyload, emby, et tous ce que qoolbox nous propose; Si tu ne dispose pas de Domaine la seul solution est de faire des Alias (https://IP_WAN/alias/)

Dans mon cas j'ai un nom de Domaine donc je peut créer un nombre illimité de sous domaine tous redirigeant vers ma box; donc pour qts je peut me créer un https://qts.example.com redirigeant vers les fonction du NAS

voila pour un ssl au QTS
Code:
server {
    listen 192.168.0.27:443 ssl;
    ssl_certificate      /opt/QNginx/etc/server.crt;
    ssl_certificate_key  /opt/QNginx/etc/server.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    location / {
        proxy_pass https://127.0.0.1:8443/;
    }
}
Exemple pour emby via Domaine
Code:
server {
    listen 192.168.0.27:443 ssl;
    server_name emby.domaine.com;
    ssl_certificate      /opt/QNginx/etc/server.crt;
    ssl_certificate_key  /opt/QNginx/etc/server.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    location / {
        proxy_pass https://127.0.0.1:8920/;
        proxy_redirect off;
    }
}
Emby via Alias :
Code:
server {
    listen 192.168.0.27:443 ssl;
    ssl_certificate      /opt/QNginx/etc/server.crt;
    ssl_certificate_key  /opt/QNginx/etc/server.key;
    ssl_session_cache    shared:SSL:1m;
    ssl_session_timeout  5m;
    ssl_ciphers  HIGH:!aNULL:!MD5;
    ssl_prefer_server_ciphers  on;
    location /emby/ {
        proxy_pass https://127.0.0.1:8920/;
        proxy_redirect https://127.0.0.1:8920/ https://IP_WAN/emby/;
    }
}
Paramètre proxy :
Code:
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

client_max_body_size 100M;
client_body_buffer_size 1m;
proxy_intercept_errors on;
proxy_buffering on;
proxy_buffer_size 128k;
proxy_buffers 256 16k;
proxy_busy_buffers_size 256k;
proxy_temp_file_write_size 256k;
proxy_max_temp_file_size 0;
proxy_read_timeout 300;

127.0.0.1 = l'adresse LoopBack du NAS ou tous ces services sont aussi lancer
192.168.0.27 = Mon ip eth2

Voila le routage ici avec une freebox => Sans titre.png
 
Uhm, je ne connais pas vraiment Nginx, donc je ne comprends pas comment tu peux arriver à te connecter en https à autre que QTS... Peut être que c'est un erreur de configuration de mon côté par contre..

Dans tous les tests que j'ai fait, chaque fois que j'esseyais un virtual host sur porte 443, le tout était redirigé vers QTS.

J'ai aussi un domaine que j'utilise, e.g down.domain.com pour Qsonarr, ssh.domain.com pour KeyBox, mail.domain.com pour RainLoop etc... Mais tout en http et non pas en HTTPS...

Est-ce que tu as des conseils?

Sent from mobile using TapaTalk
 
sans ta config sous les yeux je dirai :
Code:
    listen 192.168.0.27:443 ssl;
    [b][u]server_name emby.domaine.com;[/u][/b]
que tu a oublier la ligne que j'ai mise en gras souligner

tu doit faire 1 :
Code:
server {
	listen .....
}
par sous domaine
 
a l'arrache vite fait :
Code:
server {
    listen 192.168.0.27:80;
    server_name pyload.domaine.com;

    location / {
        proxy_pass http://127.0.0.1:PORT_PYLOAD/;
        proxy_redirect off;
    }
}
server {
    listen 192.168.0.27:80;
    server_name qsonarr.domaine.com;

    location / {
        proxy_pass http://127.0.0.1:PORT_QSONAR/;
        proxy_redirect off;
    }
}
server {
    listen 192.168.0.27:80;
    #Pas de server_name ou alors du genre comme ca
    #server_name qts.domaine.com;
    location / {
        proxy_pass http://127.0.0.1:PORT_QTS/;
    }
}

Tous sa a mettre entre http { ..... }
 
OK, donc sur apache (que c'est le serveur web que j'utilise) je dois réessayer de faire les hôtes virtuels avec la porte 443... J'avais déjà essayé, mais je vais tempter de nouveau...

Sent from mobile using TapaTalk
 
Voila quelque exemple de reverse proxy qui marche avec apache (Qthttpd):

Code:
## Qsonarr - reverse proxy sur un daemon en locale

<VirtualHost *:80>
       ServerName down.domain.com
       ProxyRequests Off
<Proxy *>
       Order deny,allow
       Allow from all
</Proxy>
<Location />
       Order allow,deny
       Allow from all
</Location>
       ProxyPreserveHost On
       ProxyPass / http://localhost:8989/
       ProxyPassReverse / http://localhost:8989/
       ProxyStatus On
</VirtualHost>
Code:
######## Chesspaste - reverse proxy avec un site externe (en HTTP)

<VirtualHost *:80>
        ServerName chesspaste.domain.com
        DocumentRoot "/share/Web"
<Directory "/share/Web">
        Options Indexes Includes FollowSymLinks
        AllowOverride All
        Order Allow,Deny
        Allow from all
        Deny from none
</Directory>
<Location />
        ProxyPass http://www.chesspastebin.com/
        ProxyPassReverse http://www.chesspastebin.com/
</Location>
</Virtualhost>
Code:
### Router - reverse proxy sur la WebUI du routeur

<VirtualHost *:80>
        ServerName router.domain.com
        ProxyRequests Off
<Proxy *>
        Order deny,allow
        Allow from all
</Proxy>
<Location />
        Order allow,deny
        Allow from all
</Location>
        ProxyPreserveHost On
        ProxyPass / http://192.168.1.1/
        ProxyPassReverse / http://192.168.1.1/
        ProxyStatus On
</VirtualHost>
Le problème est que si je veux faire un reverse proxy sur la porte 443, cela ne marche pas. Voici un exemple qui me redirige vers le login QTS:

Code:
### gmail mobile - reverse proxy
<VirtualHost *:443>
        ServerName test.domain.com
        DocumentRoot "/share/Web"
<Directory "/share/Web">
        Options Indexes Includes FollowSymLinks
        AllowOverride All
        Order Allow,Deny
        Allow from all
        Deny from none
</Directory>
<Location />
        ProxyPass / https://mail.google.com/mail/mu/
        ProxyPassReverse / https://mail.google.com/mail/mu/
</Location>
</Virtualhost>
Comment puis-je faire?

EDIT: pour info, le fichier à modifier pour rajouter le code ci-dessus est: /etc/config/apache/extra/httpd-vhosts-user.conf
Puis il faut rédemarrer simplement Qthttpd avec: /etc/init.d/Qthttpd.sh restart.
 
Après étude dans mes heures perdu, je pense avoir trouvée pourquoi sa fonctionne pas sur ta config. Bon je fait une simu de tête donc ce soir j'applique et je test :)

Envoyé de mon ONE A2003 en utilisant Tapatalk
 
Je part du principe que :
  • ton serveur web est qthttpd (/etc/config/apache/...)
  • Qnginx & Qapache de qoolbox sont désactiver
  • l’accès a qts en https:// ne se fait pas sur le port 443 mais 8443 dans mon cas (configurer dans qts)

apache.conf (a mettre en bas du fichier):
Code:
Include /etc/config/apache/extra/apache-ssl.conf
Include /etc/config/apache/extra/httpd-proxy.conf
Include /etc/config/apache/extra/httpd-vhosts-user.conf
Include /etc/config/apache/extra/httpd-ssl-vhosts-user.conf

Include /etc/config/apache/extra/apache-ssl.conf s'ajoute lorsque tu active le ssl dans le QTS

extra/httpd-proxy.conf (fichier a créer juste pour inclure le nécessaire)
Code:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so

extra/httpd-vhosts-user.conf (a modifier en fonction de tes sous domaines dans leur version NON SSL port 80)
Code:
NameVirtualHost *:80

<VirtualHost _default_:80>
	DocumentRoot "/share/Web"
</VirtualHost>
<VirtualHost *:80>
	ServerName pyload.domaine.com
	ServerAlias pyload.domaine.com
	ProxyRequests Off
	ProxyVia Off
	<Proxy *>
		Order deny,allow
		Allow from all
	</Proxy>
	ProxyPass / http://127.0.0.1:8100/
	ProxyPassReverse / http://127.0.0.1:8100/
</VirtualHost>
<VirtualHost *:80>
	ServerName emby.domaine.com
	ServerAlias emby.domaine.com
	ProxyRequests Off
	ProxyVia Off
	<Proxy *>
		Order deny,allow
		Allow from all
	</Proxy>
	ProxyPass / http://127.0.0.1:8096/
	ProxyPassReverse / http://127.0.0.1:8096/
</VirtualHost>

extra/httpd-ssl-vhosts-user.conf (a l'origine vide si tu n'a pas créer de vhost via le QTS; a modifier pour tes sous domaine EN SSL port 443)
Code:
NameVirtualHost *:443

Listen 443

<VirtualHost *:443>
	ServerName emby.domaine.com
	ServerAlias emby.domaine.com
	SSLEngine on
	#SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!SSLv2:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
	SSLCertificateFile "/etc/stunnel/stunnel.pem"	
	SSLProxyEngine On
	#SSLProxyCheckPeerCN on
	#SSLProxyCheckPeerExpire on
	ProxyRequests Off
	ProxyPreserveHost On
	ProxyPass / https://127.0.0.1:8920/
	ProxyPassReverse / https://127.0.0.1:8920/
</VirtualHost>
<VirtualHost *:443>
	ServerName home-fbx.domaine.com
	ServerAlias home-fbx.domaine.com
	SSLEngine on
	#SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!SSLv2:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM
	SSLCertificateFile "/etc/stunnel/stunnel.pem"	
	SSLProxyEngine On
	#SSLProxyCheckPeerCN on
	#SSLProxyCheckPeerExpire on
	ProxyRequests Off
	ProxyPreserveHost On
	ProxyPass / https://127.0.0.1:8443/
	ProxyPassReverse / https://127.0.0.1:8443/
</VirtualHost>

Tu peut constater que emby est présent dans les 2 fichiers, ce qui signifie qu'il est accessible en http:// et en https:// la version https appel bien emby et non qts.
home-fbx est l’accès a qts et 8443 est le port que je lui est configurer dans qts avant de restart Qthttpd.sh

En récapitulatif: Qthttpd écoute bien que 2 port 80 et 443 mais passe la requête en fonction du sous domaine sur différent port l'interface loopback (127.0.0.1)

Autre point: home-fbx est aussi l'adresse pour accéder a filestation & autres

"/etc/stunnel/stunnel.pem" le certificat par défaut que qts met lors de la création d'un vhost en ssl; si tu en a un perso tu met le chemin du tien bien sur.

Attention: si tu te plante au restart de Qthttpd, et qu'il détecte une incohérence ou un fail de la config, il remet simplement les fichier par défaut !! laisse les ouvert dans un éditeur et sauvegarde les a nouveau pour pas avoir a tous retaper. J'utilise Bitvise SFTP pour les ouvrir sur mon pc, je ne les ferme pas temps qu'il ne me dit pas que tous c'est bien passer :
Code:
Shutting down Qthttpd services: OK.
Starting Qthttpd services: OK

Pour finir un petit screen de ce que j'annonce : Sans titre.png
 
Merci Celena! Donc, pour résumer, ce que tu as fait en gros est:

1. Créer un virtual host qui écoute sur porte 443 dans le fichier httpd-ssl-vhosts-user.conf que tu utilises pour tout accès à QTS (et qui renvoie à la porte 8443)

2. Créer dans le même fichier n'importe quel autre virtual host qui doit être en SSL

3. Sur le panneau de config de QTS, changer la porte de défaut SSL de QTS de 443 à 8443.

4. Redémarrer Qthttpd.sh

Juste une question: vu que j'ai un certificat SSL acheté et lié à un sous-domaine que j'utilise pour accéder à QTS, et que j'ai bien configuré dans le NAS à travers le QTS UI, je dois juste m'assurer qu'il est bien repris pour le virtual host de QTS, alors que pour les autres virtual host il faudra spécifier le certificat généré par l'application même, n'est pas?

Est-ce que cela est correcte ?

Merci!!

Sent from mobile using TapaTalk
 
giopas a dit:
Juste une question: vu que j'ai un certificat SSL acheté et lié à un sous-domaine que j'utilise pour accéder à QTS, et que j'ai bien configuré dans le NAS à travers le QTS UI, je dois juste m'assurer qu'il est bien repris pour le virtual host de QTS, alors que pour les autres virtual host il faudra spécifier le certificat généré par l'application même, n'est pas?

Non met le juste ici : SSLCertificateFile "/etc/stunnel/stunnel.pem" dans le Vhost concerner

celui que j'ai noter c'est le certificat non signer par défaut d'apache que qnap a configurer.

n’oublie pas de bien modifier le fichier apache.conf; car par moment il ne les inclut pas automatiquement (les vhosts) le mieux étant de les écrire comme ça il les oubli pas
 
Et pour faire rire : Non ce n'est pas mon job de configurer des serveurs Web :D
C'est juste une passions, je m'occupe de 5 serveurs dédier ne m'appartenant pas :D