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

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

5
Docker-nginxとphp-fpmを別々にスケーリングする
私はdockerとdocker-composeをいじくり回してきましたが、質問があります。 現在、私のdocker-compose.ymlは次のようになっています。 app: image: myname/php-app volumes: - /var/www environment: <SYMFONY_ENVIRONMENT>: dev web: image: myname/nginx ports: - 80 links: - app volumes_from: - app アプリには、ポート9000のphp-fpmとアプリケーションコードが含まれています。Webはnginxであり、設定は数ビットです。 これは、nginxをphp-fpmに接続するために私がそれを期待する方法を機能します:私はこの行を持っています: fastcgi_pass app:9000; これを効果的にスケーリングするにはどうすればよいですか?たとえば、1つのnginxコンテナを実行し、3つのアプリコンテナを実行したい場合、3つのphp-fpmインスタンスがすべてポート9000でリッスンしようとします。 php-fpmの各インスタンスを異なるポートに配置し、どの時点でもnginx構成のどこにあるのかを知るにはどうすればよいですか? 私は間違ったアプローチを取っていますか? ありがとう!
11 nginx  php  php-fpm  docker 

1
ロケーション内のステートメントが404を返す場合のnginx
次のブロック location / { if ($http_origin ~* (https?://[^/]*\.example\.com(:[0-9]+)?)) { add_header 'Access-Control-Allow-Origin' "$http_origin"; } try_files $uri $uri/ /index.php?$args; } …上記のコードがtry_filesディレクティブに到達しないため、404が発生します。 これはnginx のIfIsEvilに関連していますか? そうでhttp_originある場合、ifステートメントを使用しないでテストする他の方法はありますか? 私はこれをnginx> 1.4(1.4.6、1.7、1.7.8)で試しました。
11 nginx  cors 

2
私のサーバーに奇妙なBittorrentログオン
次のログが私のサイトがいつかダウンしたことと関係があるかどうかはわかりません。サーバーに多くのWebサイトがあり、次のようなログがありません。 117.169.1.85 - - [03/Jan/2015:23:21:37 +0800] "GET /announce.php?info_hash=%D0%A2M%CE%13%21H%D4%11%0C%8C%27%22%C83%B4%A3l%92%15&peer_id=%2DSD0100%2D%C50%95xmh%9B%13%7C%D42%F7&ip=39.178.24.33&port=14940&uploaded=3893629&downloaded=3893629&left=1369695469&numwant=200&key=1490&compact=1 HTTP/1.1" 404 162 "-" "Bittorrent" 115.231.228.252 - - [03/Jan/2015:23:21:37 +0800] "GET /announce.php?info_hash=%DE%82%BC%CFBmH%29e%FD%25%ED6b%F2%2DX%EE%BE%21&peer_id=%2DSD0100%2D%BF3%DAG%83%1F%DAGnV%E3%C8&ip=118.134.134.210&port=13567&uploaded=675282944&downloaded=675282944&left=80740352&numwant=200&key=7916&compact=1 HTTP/1.0" 404 162 "-" "Bittorrent" 115.231.228.252 - - [03/Jan/2015:23:21:37 +0800] "GET /announce?info_hash=%DE%82%BC%CFBmH%29e%FD%25%ED6b%F2%2DX%EE%BE%21&peer_id=%2DSD0100%2D%BF3%DAG%83%1F%DAGnV%E3%C8&ip=118.134.134.210&port=13567&uploaded=675282944&downloaded=675282944&left=80740352&numwant=200&key=16205&compact=1 HTTP/1.0" 404 20283 "-" "Bittorrent" 123.123.126.154 - - [03/Jan/2015:23:21:37 +0800] "GET /announce.php?info_hash=%AA%21U%8F%7F%BA%DC%8F%D2%A5%B5A%7B%26t%F7%2A%FF%1E%8C&peer_id=%2DSD0100%2D%91%11%E7%11G%7B%8C%EB%14Y%2B%26&ip=123.123.126.154&port=12070&uploaded=129742857&downloaded=129742857&left=85310&numwant=200&key=11590&compact=1 HTTP/1.0" 404 162 "-" "Bittorrent" 114.86.129.8 …

2
Nginxはphp-fpmを使用するphpスクリプトでのみ404をスローします
nginx+ を使用してテストサーバーをインストールしましたphp-fpm。私は次のすべてを試しました: Nginx + Php5-fpmがphpファイルをレンダリングしない nginx + php fpm-> 404 phpページ-ファイルが見つかりません PHPファイルにアクセスすると、nginxは404エラーをスローします 私が試したことを要約する: 再インストール。 スクリプトの特権を変更します(変更しました0777)。 fastcgi_intercept_errors on。 チェックrootのレベルでディレクティブを:server、locationとlocation ~ \.php。 fastcgi_param SCRIPT_FILENAMEディレクティブをチェックしました。 サーバーは.phpスクリプトで404(およびオンのみ)を返します。名前を変更できますが.html、問題ありません。これについてどうすればいいですか? これは私のnginx.confです: user nginx; worker_processes 1; error_log /var/log/nginx/error.log; pid /run/nginx.pid; events { worker_connections 1024; } http { include /etc/nginx/mime.types; default_type application/octet-stream; log_format main '$remote_addr - $remote_user [$time_local] "$request" …
11 nginx  php-fpm 

1
nginxは65kバイト後に接続を終了します
gunicornで実行されているPythonアプリケーションのフロントエンドとしてnginxを構成しましたが、約65kのデータが送信された後、nginxは接続を終了しています。 たとえば、次のようなビューがあります。 def debug_big_file(request): return HttpResponse("x" * 500000) しかし、nginxを介してそのURLにアクセスすると、65283バイトしか取得できません。 $ curl https://example.com/debug/big-file | wc … curl: (18) transfer closed with outstanding read data remaining 0 1 65283 gunicornに直接アクセスすると、すべてが期待どおりに機能することに注意してください。 $ curl http://localhost:1234/debug/big-file | wc … 0 1 500000 関連するnginx設定: location / { proxy_pass http://localhost:1234/; proxy_redirect off; proxy_headers_hash_bucket_size 96; } nginxバージョン1.7.0 他のいくつかの事実: …
11 nginx  gunicorn 

1
ログファイルを手動でローテーションする
Nginxを実行しているUbuntu Webサーバーがあります。ログファイルのローテーションを構成したことがなく、数ギガバイトのモノリシックログファイルを発見したばかりです。 これらのヒントに従って、ログローテーションを構成しました。ただし、ローテーションが発生するまで1週間(ローテーション期間)待たずに済みます。 特定のファイル、またはlogrotate構成で指定されたすべてのファイルのいずれかを直ちに強制的にローテーションする方法はありますか?

1
中間キーでnginxにSSL証明書をインストールする際の問題
UbuntuサーバーにSSL証明書をインストールしようとしています。CAから証明書を購入し、証明書自体と中間証明書をダウンロードしました。そのように: 私の証明書: mydomain.crt 中間証明書: GandiStandardSSLCA.pem 私も持っています(opensslを使用して作られました) 私の秘密鍵(?): mydomain.key および署名要求: mydomain.csr これらすべてのファイルをサーバーにアップロードし、ガイドに従って証明書を中間体と結合しました。 cat mydomain.crt GandiStandardSSLCA.pem > mydomain-bundle.crt 次に、vhostの構成に次を追加します。 listen 443 ssl; ssl_certificate /etc/nginx/ssl/mydomain-bundle.crt; ssl_certificate_key /etc/nginx/ssl/mydomain.key; しかし、nginxを再起動すると、次のエラーが表示されます。 * nginxの再起動 * nginxの停止nginx [OK] nginx:[emerg] SSL_CTX_use_PrivateKey_file( "/ etc / nginx / ssl / mydomain.key")失敗(SSL:エラー:0B080074:x509証明書ルーチン:X509_check_private_key:key値の不一致)nginx:設定ファイル/etc/nginx/nginx.confテストが失敗しました 解決の理由と方法はありますか?
11 nginx  ssl 

5
上流サーバーのタイムアウトでnginxがPUTまたはPOSTリクエストを再試行するのを停止するにはどうすればよいですか?
nginxを使用して、アプリケーションへの要求を負荷分散します。要求がタイムアウトすると、nginxは別のアップストリームサーバーに切り替えることがわかりました(良好)。ただし、これは、望ましくない結果(データが2回保存される)を引き起こす可能性のあるPUTおよびPOST要求に対して行います。タイムアウト時にGETリクエストのみを再試行するようにnginxを設定することは可能ですか?または、問題を解決する別の方法はありますか? 構成は次のとおりです。 upstream mash { ip_hash; server 127.0.0.1:8081; server 192.168.0.11:8081; } server { ... location / { proxy_pass http://mash/; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }

3
node.js、mongodb、redis、本番環境でのubuntuのパフォーマンス低下、RAMは無料、CPU 100%
質問のタイトルが示すように、許容可能なパフォーマンスを達成するために、アプリケーションで何を改善できるか(またはos、ubuntuで調整できるか)を理解するのは困難です。ただし、最初にアーキテクチャについて説明します。 フロントエンドサーバーは、Ubuntu 12.04を実行する8ギガバイトのRAMを備えた8コアマシンです。アプリケーションは完全にjavascriptで記述され、node.js v 0.8.22で実行されます(一部のモジュールはノードの新しいバージョンで不満があるようです)。nginx1.4を使用して、ポート80および443から管理される8つのノードワーカーにHTTPトラフィックをプロキシしますノードクラスターAPIの使用を開始しました。socket.io 0.9.14の最新バージョンを使用して、WebSocket接続を処理します。WebSocketでは、利用可能なトランスポートとしてwebsocketとxhr-pollingのみを有効にしました。このマシンでは、Redis(2.2)のインスタンスも実行します 4ギガのRAMと2つのコアを備えたmongodb(3.6)の2番目のサーバーに永続的なデータ(ユーザーやスコアなど)を保存します。 このアプリは数か月間運用されており(数週間前まで1つのボックスで実行されていました)、1日あたり約18,000人のユーザーによって使用されています。これは、パフォーマンスの低下という主要な問題を除いて、常に非常にうまく機能しています。使用すると、各プロセスで使用されるCPUの量は、ワーカーが安定化するまで増加します(ワーカーは要求を処理しなくなります)。私は一時的に各ワーカーが使用しているCPUを1分ごとにチェックし、98%に達したら再起動します。したがって、ここでの問題は主にCPUであり、RAMではありません。socket.io 0.9.14(以前のバージョンではメモリリークが発生していました)に更新したため、RAMはもう問題ではないので、特にCPUが急速に成長するため、メモリリークの問題であるとは思えません(各ワーカーを1日に10〜12回再起動する必要があります!)。使用中のRAMも同様に大きくなり、しかし、非常にゆっくりと、使用の2〜3日ごとに1ギガ、そして奇妙なことは、アプリケーション全体を完全に再起動してもリリースされないことです。サーバーを再起動した場合にのみリリースされます!これは本当に理解できない... 私は驚くべきnodeflyを発見したので、ようやく本番サーバーで何が起こっているのかを見ることができ、数日からデータを収集しています。誰かがチャートを見たいなら、私はあなたにアクセスを与えることができますが、基本的に私は80から200の同時接続を持っていることがわかります!node.jsが数百のリクエストではなく、数千のリクエストを処理することを期待していました。また、HTTPトラフィックの平均応答時間は500〜1500ミリ秒の間で変動しますが、これは非常に大きいと思います。また、1300人のユーザーがオンラインになっているこの瞬間に、これは「ss -s」の出力です。 Total: 5013 (kernel 5533) TCP: 8047 (estab 4788, closed 3097, orphaned 139, synrecv 0, timewait 3097/0), ports 0 Transport Total IP IPv6 * 5533 - - RAW 0 0 0 UDP 0 0 0 TCP 4950 4948 2 INET …

2
Nginx Rewrite Convert querystring to Path
この単純な書き換えルールが好きです: /somefolder/mypage.aspx?myid=4343&tab=overview リダイレクト先: /folder/4343/overview/ いくつかの解決策を探しましたが、実際に機能するものはありませんでした。 私は試した: rewrite ^/somefolder/mypage.aspx?myid=(.*)&tab=overview$ /folder/$1/overview permanent; そして rewrite ^/somefolder/mypage\.aspx\?myid=(.*)&tab=overview$ /folder/$1/overview permanent; 私は何を間違えていますか?404を取得しています (より単純なルールで問題なく動作します。) ありがとう

2
Nginx + PHP-FPMは、致命的なエラーの代わりに502の悪いゲートウェイを生成しますか?
現在、NginxとPHP-FPMでSymfony2をテストしています。Xdebugも使用します。 Symfony2にはデモバンドルが付属しています。Acme/ Demoバンドルに構文エラーを作成して、Symfony 2.2.0に付属する致命的なエラーの新しい処理をテストしたかったのです。なぜそうするのか、サーバーの応答は502の悪いゲートウェイです。 しかし、ファイルapp_dev.phpで構文エラーを作成すると(フレームワークが起動する前に)、Xdebugは致命的なエラーについて通知します。 そして驚くべきことに、そのタイプミスを修正し、Acme / Demoバンドルで構文エラーを再作成すると、Symfonyエラーハンドラーが期待どおりに表示されます。そして最後に、すべてのタイプミス(ページが機能する)を修正し、その同じタイプミス(Acme / Bundleでも同様)を再度作成すると、悪いゲートウェイになります。 これについて何か手がかりはありますか?
11 php  nginx  php-fpm  xdebug  symfony 

3
レート制限時に429 httpコードを返すようにnginxを設定するにはどうすればよいですか?
スロットル/レート制限時にデフォルトの503(サービス利用不可)の代わりにhttpステータスコード429(Too Many Requests)を返すようにnginxを設定するにはどうすればよいですか? 参考までに、HttpLimitReqModuleでリバースプロキシとしてnginxを使用しています。429ステータスコードのドラフト仕様はRFC6585です。 stackexchanged に関するこの(閉じた)質問は、error_pageディレクティブを使用できることを示しています。ただし、実際にサーバーの問題があり(顧客が私たちに過度に当たらない)、サーバーが503 Service Unavailableを返す必要がある場合、429を返したくありません。 助言がありますか?

5
アクセスが拒否されたため、Windowsでのnginxの停止/再読み込みに失敗しました
WindowsサービスとしてWindows Server 2008 R2(x64)でnginxを実行しています。そのためにWindows Service Wrapperを使用しています。(実際、私はこのチュートリアルに従っています:http : //mercurial.selenic.com/wiki/HgServeNginxWindows。) サービスは正常に実行されています。ただし、サーバーは信号を処理しません(例:停止/リロード)。 つまり、サービスを停止しても、nginxは停止しません。(私はそれを殺さなければなりません。) そして、コマンドラインから設定をリロードしたい場合: C:\Users\Administrator>E:\apath\nginx\nginx.exe -p E:\apath\nginx -c E:\apath\nginx.conf -s reload 以下を出力します: nginx: [error] OpenEvent("Global\ngx_reload_4268") failed (5: Access is denied) 管理者としてコマンドを実行していますが、サービスはNETWORK SERVICEユーザーで実行されています。 ヒントや同様の問題はありますか?

1
Nginx 1.2.2:try_filesを動作させる方法は?
最近nginxをバージョン1.2.2に更新しましたが、次のエントリが壊れているようです。おそらくバージョン間の構文の変更? location / { # First attempt to serve request as file, then # as directory, then fall back to index.html try_files $uri /index.html; } Iブラウザときhttp://www.mysite.com/a-non-existent-urlは、私が「500内部サーバーエラー」エラーページにリダイレクトされます。次のログエントリが作成されます。 2012/08/13 09:20:29 [error] 18457#0: *60 rewrite or internal redirection cycle while internally redirecting to "/index.html", client: 10.0.14.1, server: mysite.com, request: "GET /a-non-existent-url HTTP/1.1", host: …
11 nginx  redirect 


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