Forum Linux.général nginx faire fonctionner plusieurs services

Posté par . Licence CC by-sa.
Tags : aucun
1
17
juil.
2018

Bonjour,

En parcourant le forum je viens de voir que j'ai le même problème que ce sujet.
https://linuxfr.org/forums/linux-debutant/posts/vhost-nginx

Actuellement sur mon ordi, j'ai juste une instance nextcloud. J'ai voulu installer une ttrss afin de faire quelques tests.

Mon probleme est que je n'arrive pas à accéder au 2 vhost ensemble, sachant quà terme je pense installer d'autres services.
Si je place dans site-enabled nextcloud et ttrss alors ca ne fonctionne pas. Chacun fonctionnant indépendement.

Ce que j'aimerai avoir et si c'est possible, c'est pouvoir avoir accés à mes applis avec les liens

domaine ou ip local/netxloud
domaine ou ip local/ttrss

J'ai cherché un peu et j'ai vu qu'on pouvait jouer avec des alias mais je n'y arrive pas.

Voici mes 2 vhost

Merci

/etc/nginx/sites-available/nextcloud

server {
    listen                        80;
    listen                        [::]:80;
    server_name                   192.168.1.32;

    # Path to the root of your installation
    root                          /var/www/nextcloud/;

    # Add headers to serve security related headers
    add_header                    X-Content-Type-Options nosniff;
    add_header                    X-XSS-Protection "1; mode=block";
    add_header                    X-Robots-Tag none;
    add_header                    X-Download-Options noopen;
    add_header                    X-Permitted-Cross-Domain-Policies none;
    add_header                    Strict-Transport-Security 'max-age=31536000; includeSubDomains;';

    location = /robots.txt {
        allow                     all;
        log_not_found             off;
        access_log                off;
    }

    location = /.well-known/carddav {
      return                      301 $scheme://$host/remote.php/dav;
    }

    location = /.well-known/caldav {
      return                      301 $scheme://$host/remote.php/dav;
    }

    # set max upload size
    client_max_body_size          512M;
    fastcgi_buffers               64 4K;

    # Enable gzip but do not remove ETag headers
    gzip                          on;
    gzip_vary                     on;
    gzip_comp_level               4;
    gzip_min_length               256;
    gzip_proxied                  expired no-cache no-store private no_last_modified no_etag auth;
    gzip_types                    application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;

    location / {
        rewrite                   ^ /index.php$uri;
    }

    location ~ ^/.well-known/acme-challenge/* {
        allow                     all;
    }

    location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
        deny                      all;
    }

    location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
        deny                      all;
    }

    location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+).php(?:$|/) {
        fastcgi_split_path_info   ^(.+.php)(/.*)$;
        include                   fastcgi_params;
        fastcgi_param             SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_param             PATH_INFO $fastcgi_path_info;
        fastcgi_param             modHeadersAvailable true;
        fastcgi_param             front_controller_active true;
        fastcgi_pass              php-handler;
        fastcgi_intercept_errors  on;
        fastcgi_request_buffering off;
    }

    location ~ ^/(?:updater|ocs-provider)(?:$|/) {
        try_files                 $uri/ =404;
        index                     index.php;
    }

    # Adding the cache control header for js and css files
    # Make sure it is BELOW the PHP block
    location ~* .(?:css|js|woff|svg|gif)$ {
        try_files                 $uri /index.php$uri$is_args$args;
        add_header                Cache-Control "public, max-age=15778463";
        add_header                X-Content-Type-Options nosniff;
        add_header                X-XSS-Protection "1; mode=block";
        add_header                X-Robots-Tag none;
        add_header                X-Download-Options noopen;
        add_header                X-Permitted-Cross-Domain-Policies none;
        # Optional: Don't log access to assets
        access_log                off;
    }

    location ~* .(?:png|html|ttf|ico|jpg|jpeg)$ {
        try_files                 $uri /index.php$uri$is_args$args;
        # Optional: Don't log access to other assets
        access_log                off;
    }
}

/etc/nginx/sites-available/ttrss

server {
    listen            80;
    listen            [::]:80;
    server_name       192.168.1.32;

    root              /var/www/ttrss;

    location / {
        index         index.php;
    }

    location ~ .php$ {
        include       snippets/fastcgi-php.conf;
        fastcgi_pass  unix:/var/run/ttrss.sock;
    }


    location /cache {
        deny          all;
    }

    location = config.php {
        deny          all;
    }
}
  • # 2 fois le même server_name

    Posté par (page perso) . Évalué à 3.

    Tu as le même server_name dans tes deux vhosts, Nginx ne peut donc pas savoir lequel est celui que tu as demandé. Il prend donc normalement le 1er par ordre alphabétique des fichiers de conf.

    Tu peux créer deux entrées dans ton /etc/hosts genre :

    192.168.1.32 ttrss
    192.168.1.32 nextcloud
    

    Et changer les server_name de tes vhosts en fonction.

    Ou alors tu bidouilles le résolveur DNS local de ta box pour qu'il réponde 192.168.1.32 pour ttrss et nextcloud + changement de server_name, mais comme ça change d'une box à l'autre, je ne saurais te dire comment faire.

    It's a fez. I wear a fez now. Fezes are cool !

    • [^] # Re: 2 fois le même server_name

      Posté par . Évalué à 4.

      comme le suggere framasky,
      pour que le vhost fonctionne il faut des servername differents

      exemple titi dans le premier, toto dans le 2e,

      il faut alors utiliser ce nom dans ton navigateur,
      mais comme le navigateur va chercher à resoudre ce nom, il faut un DNS,
      à defaut de DNS, tu rentres titi et toto dans ton fichier /etc/hosts

      autre possibilité, tu changes le listen 80 en listen 81 sur le 2e service,
      tu peux alors y acceder sur 192.168.1.132:80 pour le premier service, et 192.168.1.132:81 pour le 2e service, etc

      • [^] # Re: 2 fois le même server_name

        Posté par . Évalué à 0. Dernière modification le 17/07/18 à 16:07.

        Merci vous deux!!!!

        Bon après test le simple fait de changer le port dans les vhosts fonctionne (pas besoin de toucher au fichier hosts).
        Je peux me connecter via ip:80 ou ip:81.

        Pour tester ca fonctionne bien aussi via 1 domaine prix chez netlib et redirection des dns sur ma box.

        Par contre j'ai pas bien saisi comment ca pouvait fonctionner via le fichier hosts.

        Si j'ai bien compris je mets ca dans mon hosts

        192.168.1.32 ttrss
        192.168.1.32 nextcloud
        Et je change les server_name par ttrss et nexcloud dans les vhost?

        Par contre comment je me connecte après?
        Que ce soit 192.168.1.32/ttrss ne fonctionne pas (File not found).

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.