14 votes

www dans le domaine ne fonctionne pas dans nginx

Je suis nouveau dans l'utilisation de nginx, enfin, nouveau dans l'utilisation de tout ce qui n'est pas cpanel... J'ai des problèmes pour faire fonctionner des domaines avec nginx lorsque l'on inclut www. dans l'url.

www.mydomain.com > not work 404
mydomain.com > works

Je ne sais pas si j'ai fait une erreur avec les fichiers de configuration nommés, ou la configuration du serveur pour nginx. Je suis en train d'apprendre à la hâte et je ne vais pas être surpris si j'ai fait une erreur avec la configuration de base. J'utilise la dernière version de nginx et de php-fpm, à part le problème de mon domaine, tout fonctionne.

Je suis (essaie ?) de faire fonctionner des sous-domaines, ils fonctionnent, mais l'utilisation de www. donne lieu à un 404. J'utilise les serveurs de noms, etc. de mon serveur principal .org domaine du serveur. Je vais poster tout ce qui est pertinent ci-dessous dans l'espoir que quelqu'un ici puisse repérer les erreurs que je fais ou que j'ai faites.

etc/hosts 
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1       localhost.localdomain localhost
::1             localhost6.localdomain6 localhost6
184.xxx.xxx.146 server.servername.org servername.org 

named.conf

   ... 
   view "localhost_resolver" {
/* This view sets up named to be a localhost resolver ( caching only nameserver ).
 * If all you want is a caching-only nameserver, then you need only define this view:
 */
   # match-clients         { 127.0.0.0/24; };
   # match-destinations    { localhost; };
   match-clients      { any; };
   match-destinations { any; };
   recursion no;

        zone "servername.org" {
                type master;
                file "/var/named/servername.org.db";
        };

// optional - we act as the slave (secondary) for the delegated domain
zone "mydomain.com" IN {
  type slave;
  file "/var/named/mydomain.com.db";
  masters {10.10.0.24;};
}; 
allow-notify { 184.xxx.xxx.146; };
};

mondomaine.com.db

$TTL    86400
mydomain.com.  IN      SOA     ns1.servername.org.      server.servername.org.        (
                                2002012013; Serial
                                1H      ; Refresh (change 1H to 6H in 3 days or so)
                                1800    ; Retry (change to 1H in 3 days)
                                2W      ; Expire
                                1D ); Minimum
mydomain.com.          IN      NS      ns1.servername.org.
mydomain.com.          IN      NS      ns2.servername.org.
ns1.servername.org.              IN      A       184.xxx.xxx.147
ns2.servername.org.             IN      A       184.xxx.xxx.148
mail.servername.org.             IN      A       184.xxx.xxx.146
mydomain.com.          IN      A       184.xxx.xxx.146
mydomain.com.          IN      MX      0       mail.servername.org.
@                               A       184.xxx.xxx.146
www                            A       184.xxx.xxx.146

nginx.conf utilise include /etc/nginx/sites-enabled/* ; et la configuration de nginx "mydomain.com".

server {
    server_name www.mydomain.com;
    rewrite ^(.*) http://mydomain.com$1 permanent;
}
server {
listen 80;
server_name mydomain.com www.mydomain.com;

   # access_log /srv/www/mydomain.com/logs/access.log;
    error_log /srv/www/mydomain.com/logs/error.log;
    root /srv/www/mydomain.com/public_html;
    set $noadmin 1;

    location / {
        try_files $uri $uri/ /index.php?$args;
        index index.html index.htm index.php;
    }

    # Add trailing slash to */wp-admin requests.
    rewrite /wp-admin$ $scheme://$host$uri/ permanent;

     location ~ \.flv$ {
            flv;
            root /srv/www/mydomain.com/public_html;
     }

     location ~ \.mp4$ {
            root /srv/www/mydomain.com/public_html;
            mp4;
     }

     # use fastcgi for all php files
        location ~ \.php$ {
        try_files $uri =404;
        fastcgi_pass 127.0.0.1:9000;
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME /srv/www/mydomain.com/public_html$fastcgi_script_name;
        include fastcgi_params;
   }

# deny access to apache .htaccess files
    location ~ /\.ht
    {
        deny all;
    }
}

Je peux accéder aux sous-domaines, donc mon horrible tentative semble fonctionner, mais je ne comprends pas pourquoi www.mydomain.com ne se connecte pas, alors que http://mydomain.com sera. Je lis/apprends au fur et à mesure, je ne veux pas faire de changements tant que je ne comprends pas ce que font ces changements. Je pourrais finir par casser plus que les URLs.

14voto

foozy Points 2868

Vous réécrivez www.domain.com sur les premières lignes de nginx.conf. Si je ne me trompe pas, réécrire et rediriger sont des choses différentes. Essayez ceci sur la première ligne serveur bloc ;

server {
    server_name  www.mydomain.com;
    return       301 http://mydomain.com$request_uri;
}

et le changement

server_name mydomain.com www.mydomain.com

à

server_name mydomain.com

dans le second bloc de serveurs.

1voto

Loay mansour Points 21

Ma solution et elle fonctionne pour moi

server {
    listen 80;
    server_name yourdomainname.com www.yourdomainname.com;
    return 301 https://$server_name$request_uri;
}

écrivez le code précédent dans ce fichier --> yourdomainname.conf

nginx

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X