Nginxはサイト対応のサイトを取得していませんか?


103

10時間以上の調査の結果、なぜこれが機能しないのかわかりませんでした。ローカルホストを/ etc / nginx / sites-enabled / defaultにあるサイト対応フォルダーに移動しようとしています。

これは、sites-availableフォルダーからのシンボリックリンクです。次の構成を使用すると、localhost:8080をアドレスとして使用して「接続できません」と表示されます

nginx.conf(/usr/local/nginx/conf/nginx.conf):

user  www-data;
worker_processes  2;

events {
    worker_connections  1024;
}


http {
    include       mime.types;
    default_type  application/octet-stream;

    sendfile        on;

    keepalive_timeout  65;

    include /etc/nginx/sites-enabled/*; 
}

サイトで利用可能(/ etc / nginx / sites-available / default):

server {
  listen   8080;
  root /home/myusername/myown/customdirectory;
  index index.php index.html index.htm;
  server_name localhost;

    location / {
        try_files $uri $uri/ /index.html;
    }

    location /doc/ {
        alias /usr/share/doc/;
        autoindex on;
        allow 127.0.0.1;
        allow ::1;
        deny all;
    }


    error_page 404 /404.html;

    error_page 500 502 503 504 /50x.html;
    location = /50x.html {
        root /usr/share/nginx/www;
    }

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
    }

    location ~ /\.ht {
        deny all;
    }
}

nginx.confで利用可能なサイトから関連情報を入力すると、これを機能させることができますが、なぜこのように機能しないのか理解できません。

ありがとう!


2
シンボリックリンクは壊れていませんか?ls -l / etc / nginx / sites-enabled /
catalin.costache 2012年

1
はい、シンボリックリンクを再確認しましたが、まだうまくいきません
Discorick


回答:


196

私も同じ問題を抱えていました。これは、シンボリックリンクで誤って相対パスを使用したためです。

フルパスを使用しましたか?

ln -s /etc/nginx/sites-available/example.com.conf /etc/nginx/sites-enabled/example.com.conf

私もこれを修正しました!ありがとう!
Sander Versluys 2013年

4
私の命を救ってくれてありがとう!
MatTheCat 2013

4
相対リンクではなく、相対リンクのパスが正しくないことによる問題である可能性があります。たとえば、リンクが../1つのディレクトリを上に移動することで始まっていない場合は、と入力しsites-availableます。catシンボリックリンクを作成して出力を取得できる場合、@ Hannesが言ったように、Nginxもそれを読み取る必要があります。絶対パスを使用すると、間違ったパスを実行することがはるかに難しくなります。
ブライソン

ファイルの絶対パスを取得するためのコマンドラインツールはありませんか?

これが問題だったなんて信じられない。これをチェックすることを推測しなかったでしょう!ありがとう!
phouse512 2016年

35

からの変更:

include /etc/nginx/sites-enabled/*; 

include /etc/nginx/sites-enabled/*.*; 

私の問題を修正しました


2
Ubuntu 16.xxで私と同様に問題を修正
Jan Wiemers

2
どうやってこれを理解しましたか?それは私のために働いたが、これは明白ではない
afarley

2
これは、nginxとDockerで遊ぶときに修正されました。
Eugen

1
同上、ubuntu / trusty64画像で修正
ブライアンA

2
それが私にとっての問題でした!しかし、私の場合、それは* .confを探していて、私のエンディングは異なっていました。クレイジーこれで何時間も無駄にした!
Nigel、

16

インクルードsites-available/defaultの中でsites-enabled/default。必要なのは1行だけです。

sites-enabled/default(新しい設定バージョン?):

インクルードパスはそれをインクルードしたファイルからの相対パスのようです

include sites-available/default;

includeドキュメントを参照してください。


nginxの特定のバージョンでは、インクルードされたファイルへの相対パスを1行にすることで、純粋に他のファイルをインクルード/リンクできると思います。(少なくとも、これは、新しいnginxバージョンがそれらを壊すまで、私が使用していたいくつかの「継承された」構成ファイルでは、このように見えました。)

sites-enabled/default(古いコンフィグバージョン?):

インクルードパスは現在のファイルからの相対パスのようです

../sites-available/default
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.