J'utilise nginx comme frontal web et apache2 comme back-end web. Apache fait tourner plusieurs sites web localement et nginx y accède.
Pour l'instant, différents sous-domaines sont hébergés, mais je veux les migrer en un seul en utilisant http://my-single-domain.com/subdomain-alias
grâce à nginx.
Le répertoire racine et le port vhost d'apache2 sont différents pour chaque sous-domaine (cela semble évident, n'est-ce pas ?).
J'ai essayé plusieurs configurations mais je n'arrive pas à obtenir l'envoi de la ressource, c'est-à-dire que l'index html est envoyé mais les ressources ne sont pas trouvées par le serveur ( 404 Not Found
) malgré la règle root
en cours.
J'ai essayé plusieurs solutions telles que :
location /alias1 {
proxy_pass http://127.0.0.1:9095/;
include /etc/nginx/proxy.conf;
}
o
location /alias1 {
alias /alias1/;
proxy_pass http://127.0.0.1:9095/;
include /etc/nginx/proxy.conf;
}
ou même
location /alias1/ {
rewrite ^/alias1(/.*)$ $1 break;
proxy_pass http://127.0.0.1:9095/;
}
ou encore
location /alias1/ {
rewrite ^/alias1(/.*)$ $1 break;
proxy_pass http://127.0.0.1:9095/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Quel est le problème de cette installation ? Comment configurer nginx pour qu'il récupère les ressources à partir d'un répertoire racine spécifique lorsque l'âge de l'utilisateur est atteint ? /alias1/page
est demandé ?
Demandé en premier lieu sur webmasters.stackexchange.com
---### /etc/nginx/proxy.conf proxy_redirect désactivé ; proxy_set_header Hôte $host ; proxy_set_header X-Real-IP $remote_addr ; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for ; proxy_set_header X-Forwarded-Proto https ; #client_max_body_size 10m ; #client_body_buffer_size 12 #proxy_send_timeout 90 ; proxy_read_timeout 90 ; proxy_buffers 32 4k ;
/etc/nginx/nginx.conf
user www-data www-data;
worker_processes 2;
pid /var/run/nginx.pid;
worker_rlimit_nofile 1024;
events {
worker_connections 512;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
sendfile "on";
tcp_nopush "on";
tcp_nodelay "on";
keepalive_timeout "65";
access_log "/var/log/nginx/access.log";
error_log "/var/log/nginx/error.log";
server_tokens off;
types_hash_max_size 2048;
include /etc/nginx/conf.d/*.conf;
include /etc/nginx/sites-enabled/*/*;
}
/etc/nginx/site-enable/single-domain.conf
server {
listen 443;
ssl on;
ssl_certificate /etc/ssl/private/single-domain.com-with_chain.crt;
ssl_certificate_key /etc/ssl/private/single-domain.com.key.pem;
ssl_ciphers 'ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA';
ssl_prefer_server_ciphers on;
ssl_dhparam /etc/ssl/private/dhparams.pem;
server_name www.single-domain.com;
location / {
proxy_pass http://127.0.0.1:8090/;
include /etc/nginx/proxy.conf;
}
location /alias/ {
proxy_redirect off;
proxy_http_version 1.1;
proxy_pass http://127.0.0.1:8103/;
proxy_set_header Host alias.single-domain.com;
root /var/www/alias.single-domain.com;
}
location ~* \.(jpg|png|gif|jpeg|css|js|mp3|wav|swf|mov|doc|pdf|xls|ppt|docx|pptx|xlsx|otf|eot|svg|ttf|woff)$ {
root /var/www/single-domain.com/public;
proxy_buffering on;
proxy_cache_valid 200 120m;
expires 864000;
}
access_log /var/log/nginx/single-domain.com/www-access.log;
error_log /var/log/nginx/single-domain.com/www-error.log;
}
0 votes
C'est une très mauvaise idée. Vous devrez modifier tous vos sites web pour rechercher des actifs statiques qui ne sont pas dans
/img/logo.png
pero/alias1/img/logo.png
. C'est parfois presque impossible.0 votes
Pourquoi voulez-vous vous débarrasser des sous-domaines ?
0 votes
L'objectif n'est pas de se débarrasser des sous-domaines, mais d'utiliser le TLS du domaine unique à la place. Les sous-domaines ne sont que des services personnels et privés qui, selon l'IMO, n'ont pas besoin de sous-domaines pour cela en premier lieu (c'est juste qu'il est facile de les séparer en premier lieu). N'est-il pas possible de demander à nginx de rechercher des actifs dans un autre répertoire racine tout en supprimant l'option
/alias/
-part-path de l'actif lui-même ? !0 votes
Il suffit d'obtenir le certificat Wildcard ! Il sera valable pour tous les sous-domaines. Cela vous coûtera peut-être un peu plus cher mais vous fera gagner beaucoup de temps ! L'abandon des sous-domaines aura également des répercussions majeures sur le référencement. Ne faites pas un changement aussi important si tout ce que vous gagnez est d'économiser quelques dollars sur votre certificat SSL.
0 votes
Comme je l'ai dit, ce sont des services personnels et privés qui sont hébergés. Je n'ai pas besoin de certificat valide mais c'est un plus. Je suis bien conscient de cette solution, que je ne recherche pas (sinon j'aurais demandé où acheter un wild-card cert, pas comment configurer nginx. Merci quand même pour le commentaire.
0 votes
La configuration complète, tous les fichiers s'il vous plaît, y compris /etc/nginx/proxy.conf, d'après ce que je vois, vous avez quelque chose de mal dans vos configurations :) également, inclure la configuration d'apache pour les vhosts.
0 votes
Conf file ajouté dans la question.