タグ付けされた質問 「nginx」

Nginx( "eNgine x")は、軽量で高性能なHTTPサーバー、リバースプロキシ、TCPストリームプロキシ、メールプロキシで、BSDライクなライセンスの下でリリースされています。

4
nginxを使用してURLから末尾のスラッシュを削除する
私のサイトにある次のURLを同等にしたいと思います。 /foo/bar /foo/bar/ /foo/bar/index.html さらに、2番目の2つのフォームが最初のフォームにHTTP 301リダイレクトを発行するようにします。私は静的なページを提供しているだけで、3番目の形式に従って配置されています。(言い換えると、ユーザーが要求/foo/barした場合、ファイルをで受信する必要があります/usr/share/.../foo/bar/index.html)。 私にはnginx.conf現在次のものが含まれています: rewrite ^(.+)/$ $1 permanent; index index.html; try_files $uri $uri/index.html =404; これはのリクエストに対して/foo/bar/index.htmlは機能しますが、リクエストし/foo/barたり、/foo/bar/Safariから「リダイレクトが多すぎた」と言われたりすると、無限のリダイレクトループまたはそのようなものがあると思います。説明した方法でnginxを取得してURLをファイルにマッピングするにはどうすればよいですか? 編集:私の完全な構成 nginx.confドメイン名を「example.com」に置き換えた私の全体です。 user www-data; worker_processes 1; pid /run/nginx.pid; events { worker_connections 768; } http { sendfile on; tcp_nopush on; tcp_nodelay on; keepalive_timeout 65; types_hash_max_size 2048; server_tokens off; server_names_hash_bucket_size 64; include /etc/nginx/mime.types; default_type …
14 nginx 

5
サブドメインのNginx競合するサーバー名
私は現在、foo.domain.comのNginxで実行されているvhostを持っています。 追加したい新しいサブドメイン用の新しいファイルbar.domain.comを作成しました。両方に同じ設定を使用しています。 Nginxを再起動すると、 Restarting nginx: nginx: [warn] conflicting server name "" on 0.0.0.0:443, ignored nginx. bar.domain.comにアクセスすると、表示されるはずのものが表示されますが、foo.domain.comにアクセスすると、bar.domain.comがリンクしているページが表示されます。 フー upstream php-handler { server unix:/var/run/php5-fpm.sock; } server { listen 80; server_name foo.domain.com; return 301 https://$server_name$request_uri; } server { listen 443; ssl on; ssl_certificate [path_foo]/cacert.pem; ssl_certificate_key [path_foo]/privkey.pem; root [path]/foo; ... } バー server { …
14 nginx  ssl  virtualhost 

4
nginxデータを2つのサーバーに複製する方法は?
1つの特定のnginxサーバーが受信するトラフィックを2つのサーバーに複製しようとしています。目標は、負荷分散ではなく、すべてのnginxサーバーで同じ入力を再生することです。 例:NginxはHTTP POSTを受信します。これと同じPOSTを他のサーバーに送信したい。 **更新** 状況は簡単で複雑ではありません。POSTデータ(またはGETまたは任意の要求データ)を別のサーバーIP(nginxインスタンスも実行している)に再送信するだけです。それだけ。 ユーザー->データのポスト-> NGINXインスタンス----リダイレクト--->サーバー1とサーバー2
14 nginx  ab 

2
なぜnginx server_nameディレクティブの最大長は14文字ですか?
次の仮想ホストがあります server { server_name abc.example.com; root /var/www/test/; index index.html; } 実行するnginx -s reloadと、次のエラーが表示されます。 nginx:[emerg] server_names_hashを構築できませんでした。server_names_hash_bucket_sizeを増やす必要があります:32 15文字以上のserver_nameでも同様です。 server_nameをab.example.com(または15文字未満の任意の名前に)設定すると、問題は明らかになりません。 これを修正するために、以下を追加しました/etc/nginx/nginx.conf(以前は定義されていませんでした): server_names_hash_bucket_size 64; 33に設定しても機能しましたが、32ではありませんでした。 server_nameのデフォルトの最大長が14文字であるのはなぜですか? この制限は、nginxのデフォルト設定またはそれが実行されるシステムによって課されていますか? server_nameの15は、ハッシュバケットの最大サイズにどのように影響しますか?(システムに定義されている仮想ホストは4つのみです)

1
HTTPヘッダーを介してSSLプロトコル情報をバックエンドに渡す
Poodleの脆弱性が最近明らかにされた後、私たちのチームはSSLv3からの移行を決定しました。しかし、完全に削除する前に、ブラウザが非推奨のSSLv3を使用していることを毎日のユーザーに警告したいと考えています。だから、私たちはアイデアを思いついた フロントエンドSSLオフロードからプロトコル(SSLv3、TLS1など)を検出します(nginxを使用します) その情報(SSLプロトコル)をHTTPヘッダー経由でApache-backendに渡します。 次に、バックエンドコードがそのヘッダーを処理し、クライアントがSSLv3を使用している場合に警告を出します。 私はnginxに機能があることを知っていますproxy_set_header。したがって、これは次のように簡単になります proxy_set_header X-HTTPS-Protocol $something; 現在、問題は次のとおりです。明らかに、nginxはクライアントが使用するプロトコルを知っていますが、その情報をHTTPヘッダー経由でバックエンドに渡すにはどうすればよいですか? ありがとう SSLv3を使用している場合、同様のスレッドApacheリダイレクトユーザーが指摘したように、この考えは非常に悪い考えになります。 理由は、HTTPトラフィックがTLSトンネルを介して送信される前にTLSハンドシェイクが発生するためです。バックエンドがSSLプロトコルを検出するまでに、クライアントは最初のリクエストでプライベートデータを送信した可能性があります。永続的かつ長期的なソリューションの場合、SSLv3を無効にすることを検討する必要があります。
13 nginx  ssl  poodle 

3
NGINX PageSpeed Moduleリソースでgzip圧縮を有効にするにはどうすればよいですか?
私は特定のウェブサイトを最適化することに重点を置いており、Google PageSpeed Insightsツール(モバイルとデスクトップの両方)で100点を獲得しています。ほとんどの項目は問題なく動作していますが、Webサイトの「圧縮を有効にする」警告が引き続き表示されます。 サーバーでgzipが有効になっており、非圧縮で提供されているリソースはNGINX PageSpeedモジュールからのみであるため、これは面倒です。GoogleのWebサイトの構成ページを確認しましたが、既に設定されている一般的なNGINX構成以外に、圧縮を有効にする方法を説明するものはありません。 私の質問は次のとおりです。pagespeedリソースで機能するようにgzip圧縮を有効にするにはどうすればよいですか? 私のサーバーのセットアップ: Ubuntu 12.0.4.3 LTS NGINX-PageSpeedモジュール1.6.29.5ベータ版でカスタムコンパイルされた1.5.4 NGINXサーバー構成: user www-data; #set worker processes to cpu processes worker_processes 4; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { client_max_body_size 200m; include /etc/nginx/mime.types; default_type application/octet-stream; access_log /var/log/nginx/access.log; sendfile on; keepalive_timeout 3; types_hash_max_size 2048; gzip on; gzip_disable …

1
Nginxを使用してサブホストを外部ホストにリダイレクトする
Nginxで同じサブネットにある別のサーバーにサブパスをリダイレクトする非常に単純なマップを作成する必要があります。 Nginxサーバー:192.168.0.2 Tomcatサーバー:192.168.0.3:8443 私はこれをサーバーセクションに入れようとしました location /tomcatapi/ { rewrite /tomcatapi/(.*) $1 break; proxy_pass http://192.168.0.3:8443; } しかし、http://www.myservice.com/tomcatapi/にアクセスするのは500エラーページで、nginxログファイルには次のエラーがあります。 the rewritten URI has a zero length このconfに欠けているものは何ですか?

3
負荷分散なしのnginxフェールオーバー
nginxの設定に問題があります。 私はnignxをリバースプロキシとして使用しています。すべてのリクエストを最初のサーバーに送信したい。最初のサーバーがダウンした場合、2番目のサーバーにリクエストを送信します。 要するに、負荷分散なしでフェールオーバーソリューションを使用するにはどうすればよいですか?

2
nginx書き換えまたは内部リダイレクトサイクル
存在しないURLにアクセスしようとすると、nginx構成でリダイレクトサイクルを引き起こしている原因を突き止めようと、テーブルに頭を突っ込みます。構成は次のようになります。 server { listen 127.0.0.1:8080; server_name .somedomain.com; root /var/www/somedomain.com; access_log /var/log/nginx/somedomain.com-access.nginx.log; error_log /var/log/nginx/somedomain.com-error.nginx.log debug; location ~* \.php.$ { # Proxy all requests with an URI ending with .php* # (includes PHP, PHP3, PHP4, PHP5...) include /etc/nginx/fastcgi.conf; } # all other files location / { root /var/www/somedomain.com; try_files $uri $uri/ ; …
13 nginx 

1
403簡単なテストページにアクセスしようとすると禁止
nginxをインストールしたばかりで、最初のサイトをセットアップしようとしています。php-fpmでnginxを使用しようとしています。nginxがインストールされています(IPにアクセスすると、デフォルトのWelcome to nginxページが表示されます)。 今、私は簡単なスクリプトを実行しようとしています: <?php phpinfo(); しかし、403 Forbiddenページにアクセスし続けます。私の仮想ホストのログには、次のような行がたくさんあります。 2012/05/18 01:29:45 [error] 4272#0: *1 access forbidden by rule, client: x.170.147.49, server: example.com, request: "GET / HTTP/1.1", host: "example.com" ファイル/srv/www/test/index.phpの所有者はnginxです(777ファイルを含む完全なパスを使用できないようにしました)。 私はnginxが実際にnginx/nginx設定のユーザーとグループの下で実行されていることを確認しました。nginx.confでは、他の構成が邪魔にならないようにデフォルトの構成インクルードパスを変更しました(include /etc/nginx/sites-enabled/)。 私が使用している設定は次のように見えます(他の設定(php-fpm / nginx.conf)が必要な場合はお知らせください): server { listen 80; server_name example.com; root /srv/www/test; access_log /var/log/nginx/example-access.log; error_log /var/log/nginx/example-error.log error; location ~ /. { …
13 nginx 

2
nginx / chromeを使用したクロスオリジンリソースシェアリング(CORS)
次のセグメンテーションを使用したWebサイトがあります。 api.example.com developers.example.com example.com 両方を許可しexample.com、developers.example.comにAJAXリクエストを送信したいと思いますapi.example.com。 api.example.comユニコーンによって提供されているRackアプリであるのためのこれまでの私のnginx設定は、次のようになります。 upstream app_server { server unix:/tmp/api.example.com.sock fail_timeout=0; } server { listen 80; server_name api.example.com; access_log /home/nginx/api.example.com/log/access.log; error_log /home/nginx/api.example.com/log/error.log; location / { add_header 'Access-Control-Allow-Origin' 'http://example.com,http://developers.example.com'; add_header 'Access-Control-Allow-Credentials' 'true'; add_header 'Access-Control-Allow-Headers' 'Content-Type,Accept'; add_header 'Access-Control-Allow-Methods' 'GET, POST, OPTIONS, PUT, DELETE'; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $http_host; proxy_redirect off; …
13 nginx 

2
nginxのメンテナンスページ、ベストプラクティス
メンテナンスページが存在するときにサーバーを表示するように構成したい。私はこのコードを試してみました: location / { try_files /maintenance.html $uri $uri/ @codeigniter; } しかし、ステータスコード200で配信されることに気付き、検索エンジンに混乱を引き起こす可能性があります。ベストプラクティスは503ステータスコードを返すことだと思います。グーグルでは、このようないくつかの関連ページを見つけます。ただし、リダイレクトを行うにはifを使用し、nginxのドキュメントによると、ifsを使用するのは安全ではありません。 ifを使用せずにそれを行う方法はありますか?この場合、使用しても安全ですか? ありがとう。

1
NGINXの「client_max_body_size」ディレクティブが「location」ブロック内で機能しない
私が持っている/admin私のウェブサイト上のカタログを、私は管理者がWebフォーム経由で大きなファイルをアップロードすることができるようにしたいと思います。nginx.comの外観は次のとおりです。 http { # ... client_max_body_size 16M; # ... server { server_name example.com; root /var/www/example.com; index index.php; location /admin { client_max_body_size 256M; } # ... } } これは動作しません。/admin/index.phpスクリプトは16Mbを超えるファイルをアップロードできません:413 Request Entity Too Large ただし、ブロックするclient_max_body_sizeために移動すると、serverすべてが正常に機能します。しかし、私はこの変更をadminカタログだけにしたくありません。 docsによると、ブロックclient_max_body_size内に配置してlocation、目的のパスの設定のみをオーバーライドできます。 何が間違っているのでしょうか?
13 nginx 

3
Nginxの再起動の問題
Nginxを再起動すると突然、次のエラーが表示されます。 nginxの再起動:[アラート]:エラーログファイルを開けませんでした:open() "/var/log/nginx/error.log"が失敗しました(13:許可が拒否されました) 2011/02/16 17:20:58 [警告] 23925#0:「user」ディレクティブは、/ etc / nginx / nginx.conf:1で無視されるマスタープロセスがスーパーユーザー権限で実行される場合にのみ意味を持ちます。 設定ファイル/etc/nginx/nginx.confの構文は問題ありません 2011/02/16 17:20:58 [emerg] 23925#0:open() "/var/run/nginx.pid"が失敗しました(13:許可が拒否されました) 設定ファイル/etc/nginx/nginx.confテストが失敗しました サイトのフロントエンド部分では読み込まれますが、特にCSSなどの一部のファイルは読み込まれません。それらはサーバー上に存在しますが、Chromeにリソースを直接ロードすると、「このページが見つかりません」と表示されます。 ドメインファイルにsuexecを使用してApacheファイルを実行するように、特別なグループとユーザーを設定しました。私はnginxがrootによって所有されていると思いますが、私は問題だと仮定していますが、どのnginxファイルの所有権を変更しますか?
13 terminal  nginx 

1
Apache MPM-ワーカーとプリフォーク
VPSにインストールできる最高のApache MPMはどれかを見つけようとしています。いくつかのベンチマークを見ましたが、MPMワーカーはPreforkベンチマークよりもパフォーマンスが高いようですが、何らかの理由で、PHPのセットアップにはワーカーがPreforkを推奨しているようです。 これは、一部のPHP関数がスレッドセーフではないというだけの理由ですか?setlocale()頭に浮かぶだけですが、すべてのインスタンスで同じロケールを使用するので、それが問題になるとは思いません。私のVPSのメモリはほとんどなく、ワーカーのMPMが私のニーズに合っていると思いますが、よくわかりません。 誰かが私についてこれについて決心するのを手伝ってくれますか?ありがとう! PS: nginxとlighttpdも調べました。nginxは素晴らしいように見えますが、ソースからのコンパイルを避けようとしていますが、php-fpmの目的がまだよくわかりません。lighttpdについて-PHP / FCGIをセットアップするのは信じられないほど簡単でしたが、メモリリークがあると聞きました。これはまだ本当ですか?

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