15

nginx / 0.7.65を使用すると、4行目でこのエラーが発生します。なぜ認識されないのserverですか?

#### CHAT_FRONT ####

server {
  listen 7000 default deferred;
  server_name example.com;
  root /home/deployer/apps/chat_front/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### CHAT_STORE ####

server {
  listen 7002 default deferred;
  server_name store.example.com;
  root /home/deployer/apps/chat_store/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### LOGIN ####

server {
  listen 7004 default deferred;
  server_name login.example.com;
  root /home/deployer/apps/login/current/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### PERMISSIONS ####

server {
  listen 7006 default deferred;
  server_name permissions.example.com;
  root /home/deployer/apps/permissions/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### SEARCH ####

server {
  listen 7008 default deferred;
  server_name search.example.com;
  root /home/deployer/apps/search/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}

#### ANALYTICS ####

server {
  listen 7010 default deferred;
  server_name analytics.example.com;
  root /home/deployer/apps/analytics/current/public;

  error_page 500 502 503 504 /500.html;
  client_max_body_size 4G;
  keepalive_timeout 10;
}
4

5 に答える 5

28

serverディレクティブは、モジュールのコンテキストに含まれている必要がありますhttp。さらに、1つの必須設定を持つトップレベルのイベントモジュールと、構成のhttpモジュールに含まれる一連のスタンザがありません。nginxのドキュメントは、構成を最初から作成するのに特に役立ちませんが、実際の例があります。

出典:サーバーディレクティブに関するnginxドキュメント

于 2012-06-07T15:21:07.330 に答える
11

トップレベルのエントリを追加すると、問題が回避されました。

events {  }
于 2016-06-17T10:34:03.747 に答える
3

行末と構成ファイルのエンコードを調整してみてください。私の場合、ANSIエンコーディングと、場合によっては「Linuxスタイル」の行末(シンボルとシンボルの両方ではなくLF、シンボルのみ)が必要でした。CRLF

私はそれがかなり古い質問であることを知っています。ただし、受け入れられた回答の推奨(ディレクティブはモジュールserverのコンテキストに含まれている必要がある)は、ディレクティブがコンテキストに含まれていない例が多数あるため( Nginx WebサイトおよびこのMicrosoftガイドに)混乱する可能性がありますモジュールの。httpserverhttp

おそらくsdz( "* .confファイルを書き直して動作しました")の答えは同じ理由から来ています:ファイルが書き直された後に修正された間違ったエンコーディングまたは行末の.configファイルがありました。

于 2019-01-20T16:26:55.153 に答える
1

私はホボルグに似た問題に遭遇しました。そのコメントは私を正しい方向に向けました。私の場合、AngularアプリをホストするDockerコンテナーに使用するために、別の投稿から構成をコピーして貼り付けました。これは、デフォルトの構成に1行追加したものです。ただし、貼り付けたところ、貼り付けの先頭に余分な文字がいくつか含まれていました(EF BBBF)。私が使用していたIDE(Visual Studio)は、これらの余分なバイトを示すものを何も表示しなかったため、それらが存在することは明らかではありませんでした。これらの余分なバイトを削除すると、問題が解決しました。当時は便利だったため、16進エディター(HxD)を使用していました。私の場合、ウィンドウスタイルの行末は問題にならなかったようです。

デフォルトの設定はserver最も外側のディレクティブとして持っていたので、一番上の答えとエラーメッセージは確かに混乱していました。それは私の場合と同じままで、元のファイル(3バイト余分に含まれていない)はエラーをスローしていませんでした。

于 2020-08-04T02:57:34.310 に答える
0

* .confファイルを書き直しましたが、機能しました。

于 2018-01-02T09:22:36.550 に答える