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

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

2
SNIでnginxを使用する
今のところ、私はまだnginxでSNIを使用していません。しかし、IPアドレスプールがかなりいっぱいになり、商用XPのサポートが(ついに)終了するので、いくつかのサイトをSNIに変換することを考えています。 SNIに伴う一般的な制限と落とし穴(XPの問題、非常に古いブラウザー)を知っています。しかし、それ以外に注意すべきことはありますか? Like-SNI使用時のnginx関連の落とし穴-最近の(注目に値する!)ブラウザーでの問題/バグ
10 nginx  ssl  sni 

1
Nginxはすべての古いドメインサブドメインを新しいドメインにリダイレクトします
私は非常に長いドメインを持っていたので、それをより短くよりフレンドリーなドメインに変更することにしました。しかし、私は多くのサブドメインを持っているので(実際、私はサブドメインのワイルドカードを持っています)、ドメイン部分のみを変更しながらサブドメインを保持したいと考えました。だから、私は次のルールを作りました: server { listen 80; server_name ~^(\w+)\.olddomain\.com$; rewrite ^ $scheme://$1.doma.in$request_uri? permanent; } このスニペットが問題を解決した他の多くの質問を読みました。しかし、私と一緒に、Nginxは常に.domain.inサブドメインなしでにリダイレクトします。何が欠けていますか?私はregex101に対してregexをテストしましたが、例は正常に動作し、Nginxはリダイレクトできません。

5
NginxはチャンクコンテンツのContent-Lengthヘッダーを削除します
nginx 1.2.3を使用してスクリプトにプロキシします。 proxy_set_header Host $host; proxy_pass http://127.0.0.1:8880; proxy_buffering off; proxy_read_timeout 300s; gzip off; スクリプトはTransfer-encoding: chunkedとの両方を送信しますContent-Length: 251。 HTTP/1.0 307 Temporary Redirect Content-length: 251 Pragma: no-cache Location: /... Cache-control: no-cache Transfer-encoding: chunked 私は両方が必要ですが、nginxは自動的に削除しContent-Lengthます: HTTP/1.1 302 Found Server: nginx/1.2.3 Content-Type: application/json; charset=utf-8 Content-Length: 58 Connection: keep-alive Location: /... その結果、クライアントはチャンクが送信されるのを待ちません。これは以前のバージョンのnginxで機能していました。
10 nginx 


2
NginxからPHPにカスタムパラメータを渡す方法は?
パスとNginx 1.2.4組み合わせて使用してPHP-FPM 5.4.8おり、fastcgiカスタムパラメータをに渡そうとしていますPHP。これまでに見つけたオプションは次のとおりです。 envディレクティブを使用して環境変数を設定し、nginxで、getenv()または$_ENVからフェッチしPHPます。問題はenv、mainコンテキストでのみパラメーターを設定する必要があるのに対し、コンテキストでのみ動作するserverことです。 fastcgi_paramそのために設計されたディレクティブを使用します。 を使用して一部のパラメーターの値を変更しようとしましfastcgi_paramたが、失敗しました: nginx: fastcgi_param PATH_INFO "/var/tmp"; PHP: 私は見つけることができるすべての事前定義された配列をチェックしました: echo '<pre>'; echo "\n".'$GLOBALS'."\n"; var_dump($GLOBALS); echo "\n".'$_SERVER'."\n"; var_dump($_SERVER); echo "\n".'$_GET'."\n"; var_dump($_GET); echo "\n".'$_POST'."\n"; var_dump($_POST); echo "\n".'$_FILES'."\n"; var_dump($_FILES); echo "\n".'$_REQUEST'."\n"; var_dump($_REQUEST); echo "\n".'$_SESSION'."\n"; var_dump($_SESSION); echo "\n".'$_ENV'."\n"; var_dump($_ENV); echo "\n".'$_COOKIE'."\n"; var_dump($_COOKIE); echo "\n".'$php_errormsg'."\n"; var_dump($php_errormsg); echo "\n".'$HTTP_RAW_POST_DATA'."\n"; var_dump($HTTP_RAW_POST_DATA); echo "\n".'$http_response_header'."\n"; var_dump($http_response_header); …
10 php  nginx  fastcgi  php-fpm 

2
nginx:worker_proccessesディレクティブが機能しない
nginxでワーカープロセスを設定しようとしたのですが、このエラーが発生しました。 nginx:[emerg] "worker_processes"ディレクティブは、ここ/ etc / nginx / sites-enabled / default:1では許可されていませんnginx:構成ファイル/etc/nginx/nginx.confテストが失敗しました これが私のコードです worker_processes 4; worker_rlimit_nofile 8192; worker_priority 0; worker_cpu_affinity 0001 0010 0100 1000; server { server_name --.--.--.---; listen 80; #root /var/www/devsites/wordpress/; root /var/www/devsites/trademob/tm-hp-v2/; この問題を解決するにはどうすればよいですか?
10 nginx 

3
nginx fastcgi「プライマリスクリプトが不明です」(userdirの設定時)
nginxの設定は嫌いです。とても複雑です。PHPをユーザーディレクトリで動作させるにはどうすればよいですか?これが私のnginx.confの関連部分です: location ~ ^/~(.+?)(/.*)?$ { autoindex on; autoindex_exact_size off; alias /home/$1/public_html$2; location ~ \.php { include /etc/nginx/fastcgi.conf; fastcgi_intercept_errors on; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; } } これは私にエラーを与えます:FastCGI sent in stderr: "Primary script unknown" while reading response header from upstreamnginxエラーログに。 ここに私があり/etc/nginx/fastcgi.confます: fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param QUERY_STRING $query_string; fastcgi_param REQUEST_METHOD $request_method; fastcgi_param CONTENT_TYPE …
10 nginx  fastcgi  php-fpm 

3
Ubuntuアップグレード後のNginxフロント、Apacheバックエンドでのmod_rpafの問題
静的ファイル用のNginxフロントエンドを実行しており、Apacheのmod_rpafを使用してバックエンドに正しいリモートIPアドレスを設定することにより、PHPおよびPassenger用のApacheバックエンドにプロキシしています。Ubuntu 12.04(Precise)にアップグレードするまで、すべてが問題なく動作しました。これで、Apacheは127.0.0.1からのすべての接続を報告します。 関連する設定は次のとおりです。ここでのアップグレードによる変更はありません。 Nginx: proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; mod_rpaf: <IfModule mod_rpaf.c> RPAFenable On RPAFsethostname On RPAFproxy_ips 127.0.0.1 ::1 RPAFheader X-Forwarded-For </IfModule> 私は%{X-Forwarded-For}i自分のApache LogFormatディレクティブで使用していて、アクセスログに正しいリモートアドレスが表示されているため、Nginxがアドレスを正しく渡していることがわかります。 phpinfo()テスト、HTTP_X_FORWARDED_FOR正しいリモートアドレスを示しているが、REMOTE_ADDRが127.0.0.1です。これは、WordPressコメントなどのPHPアプリケーションにも反映されます。 Nginxとmod_rpafをX-Real-IPに切り替えても効果はありません。 見逃した変更はありましたか? 関連するバージョン情報、Ubuntuリポジトリからインストールされるすべて: Nginx 1.1.19 Apache 2.2.22 mod_rpaf 0.6

1
gitoliteとnginxを使用したHTTP上のgit
私のgitリポジトリにHTTP(S)でアクセスできるサーバーをセットアップしようとしています。 私はgitoliteとnginxを使用しています(Webインターフェースにはgitlabですが、違いがあるとは思えません)。 午後中ずっと探していて、行き詰まっているように思います。 nginxがgitoliteを使用するにはfcgiwrapが必要であることを理解していると思うので、いくつかの構成を試しましたが、どれも機能しません。 私のリポジトリは/ home / git / repositoriesにあります。 これが私が試した3つのnginx設定です。 1: location ~ /git(/.*) { gzip off; root /usr/lib/git-core; fastcgi_pass unix:/var/run/fcgiwrap.socket; include /etc/nginx/fcgiwrap.conf; fastcgi_param SCRIPT_FILENAME /usr/lib/git-core/git-http-backend; fastcgi_param DOCUMENT_ROOT /usr/lib/git-core/; fastcgi_param SCRIPT_NAME git-http-backend; fastcgi_param GIT_HTTP_EXPORT_ALL ""; fastcgi_param GIT_PROJECT_ROOT /home/git/repositories; fastcgi_param PATH_INFO $1; #fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info; } 結果: > git clone …
10 nginx  git  gitolite  fcgi 

4
nginxエイリアスが機能しないのはなぜですか?
エイリアスを設定して、誰かがにアクセスしたときに/phpmyadmin/、nginxが/home/phpmyadmin/通常のドキュメントルートからではなくエイリアスを取得しようとしています。ただし、URLをプルアップするたびに、fastcgiを介してプルされていないすべてのアイテムに404が表示されます。fastcgiは正常に動作しているようですが、残りは動作していません。strace他のすべてを通常のドキュメントルートからプルしようとしていると言われていますが、その理由を理解できません。誰かが洞察を提供できますか? これが私の設定の関連部分です: location ~ ^/phpmyadmin/(.+\.php)$ { include fcgi.conf; fastcgi_index index.php; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_param SCRIPT_FILENAME /home$fastcgi_script_name; } location /phpmyadmin { alias /home/phpmyadmin/; }
10 nginx  alias 

1
NGINXはHEADをGETリクエストに変換します
ひどい設計上の決定が原因で、HTTP HEADリクエストに応答できないアプリケーションがあります( 'Method Not Allowed'を返します)。HEADリクエストを正しく返すようにソフトウェアを変更するのは難しいです。不可能ではありませんが、余分な作業です。アプリケーションはNGINXプロキシの背後にあり、NGINXがクライアントから受信したHEADリクエストをバックエンドへのGETリクエストに変換して、ヘッダー以外の応答を破棄し、それをアプリケーションサーバーがHEADリクエストに応答できたかのようにクライアント。 現在の構成(かなり標準) upstream ourupstream{ server unix:/var/apps/sockets/ourapp.socket.thread1 server unix:/var/apps/sockets/ourapp.socket.thread2 server unix:/var/apps/sockets/ourapp.socket.thread3 [like 20 of these] } server { listen 1.2.3.4:80; server_name ourapp; access_log /var/apps/logs/ourapp.nginx.plog proxy; error_log /var/apps/logs/ourapp.nginx.elog info; gzip on; gzip_types text/plain text/html; proxy_intercept_errors on; proxy_connect_timeout 10; proxy_send_timeout 10; proxy_read_timeout 10; proxy_next_upstream error timeout; client_max_body_size 2m; error_page …
10 nginx 

1
あるnginxから別のnginxへのリダイレクト
NGINXを備えた2つのサーバー(AとB)があります。サーバーAは古いサイトにサービスを提供し、サーバーBは新しいサイトにサービスを提供しています。DNSを更新しましたが、かなり時間がかかります。私のオフィスでは、古いサイトがまだ表示されています。 subdomain.site.com この特定のサブドメインに対するサーバーAからのすべての要求をサーバーBにリダイレクトするにはどうすればよいですか? これで両方がNGINXでこれで処理されます: server { listen 80; server_name subdomain.site.ru; root /var/www/subdomain/public; passenger_enabled on; }
10 nginx  redirect 

3
サブフォルダー内のnginxプロジェクト
私はnginx設定に不満を感じているので、同じルートのサブディレクトリから複数のプロジェクトにサービスを提供するための設定ファイルの作成について助けを求めています。それらはすべて同じホスト値を使用しているため、これは仮想ホスティングではありません。おそらく例が私の試みを明確にするでしょう: 要求192.168.1.1/役立つはずであるindex.phpから、/var/www/public/ 要求192.168.1.1/wiki/役立つはずであるindex.phpから、/var/www/wiki/public/ 要求192.168.1.1/blog/役立つはずであるindex.phpから、/var/www/blog/public/ これらのプロジェクトはPHPを使用しており、fastcgiを使用しています。 私の現在の構成は非常に最小限です。 server { listen 80 default; server_name localhost; access_log /var/log/nginx/localhost.access.log; root /var/www; index index.php index.html; location ~ \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME /var/www$fastcgi_script_name; include fastcgi_params; } } 私はいろいろなことを試してみたaliasし、rewriteしかし、FastCGIのために正しく設定物事を取得することができませんでした。場所のブロックを書き込み、複製よりも雄弁な方法があるはずと思われるroot、index、SCRIPT_FILENAME、など 私を正しい方向に導くための指針はありがたいです。
10 php  nginx  fastcgi 

2
LinuxおよびNginxの最大ファイル記述子と、worker_rlimit_nofileの最適値を理解する
nginxで一見一般的な「ファイル記述子が多すぎる」エラーが発生しました。多くの検索の後、解決策は明らかにnginxが利用できるファイル記述子の数を増やすことです。しかし、これを意味のある安全な方法で快適に行うのに十分な情報はありません。ほとんどのフォーラム/メールスレッドがカバーする主なポイントは次のとおりです。 OSには独自の合計ファイル記述子制限があります(私のシステムでは、cat /proc/sys/fs/file-max「100678」を出力します) 各ユーザーは独自の制限を持つこともできます(ただし、私のシステムでは、ulimitユーザーが「無制限」を出力するときに実行されます。詳細は下部の更新を参照してください) 少数の人々は何の線に沿って何か言ったこの人は言った:「ディレクティブworker_rlimit_nofileは、それがないオペレーティング・システムの制限である『どのように多くの』指定されていません。ディレクティブworker_rlimit_nofileは、この制限が十分でない場合に、この制限を拡大する迅速で汚い方法を許可します。つまり、設定ではなくnginx OSユーザーの制限を設定するほうが「より良い」ということです。 ワーカーあたりの接続数よりも大きいworker_rlimit_nofile値をスローして1日で呼び出すことができますが、ここで何が起こっているのか本当にわかりません。 ワーカーあたりの制限がOSの制限よりも小さいのはなぜですか? 現在の制限を確認するにはどうすればよいですか? update:rootと通常のユーザーの両方で、ulimitは「無制限」を出力しますが、BUT ulimit -Hnとulimit -Sn両方が1024を出力します
10 linux  nginx  ulimit 

4
nginx + fastCGI + Django-クライアントに送信された応答のデータ破損を取得
FastCGIを使用してnginxの背後でDjangoを実行しています。クライアントに送信された応答の一部で、ランダムなデータ破損が応答の途中で発生していることを発見しました(途中で数百バイト程度になる可能性があります)。 この時点で、私はそれをnginxのFastCGIハンドラーまたはDjangoのFastCGIハンドラーのバグ(つまり、おそらくflupのバグ)に絞り込みました。スタンドアロン(つまりrunserver)モードでDjangoサーバーを実行すると、この問題は発生しないためです。FastCGIモードでのみ発生します。 その他の興味深い傾向: より大きな応答で発生する傾向があります。クライアントが初めてログインすると、1 MBのチャンクがサーバーDBに同期するために送信されます。最初の同期後、応答ははるかに小さくなります(通常、一度に数KB)。破損は常に、最初に送信された1MBのチャンクで発生しているようです。 これは、クライアントがLANを介してサーバーに接続されている場合(つまり、低遅延、高帯域幅接続)に頻繁に発生します。これにより、nginxまたはflupには、データレートの増加によって悪化するある種の競合状態があると思います。 現時点では、応答ヘッダーにSHA1ダイジェストを追加し、ヘッダーが本文のチェックサムと一致しない場合にクライアントに応答を拒否させることで、これを回避する必要がありましたが、これは恐ろしい解決策の一種です。 他の誰かがこのようなことを経験しましたか、または適切なチームにバグを報告できるように、ここで問題があるのがflupであるかnginxであるかを識別する方法に関する指針がありますか? 助けてくれてありがとう。 注:私も同様にlighttpd + FastCGI + Djangoに同様のバグを投稿しました:https : //stackoverflow.com/questions/3714489/lighttpd-fastcgi-django-truncated-response-sent-to-client-due-to -予期しない ...これは同じことではありませんが(切り捨てvs破損)、一般的な原因はWebサーバーではなくflup / Djangoであるように見え始めています。 編集:私の環境もメモする必要があります: Mac Mini上のOSX 10.6.6 Python 2.6.1(システム) Django 1.3(公式のtarballから) flup 1.0.2(flupサイトのPython eggから) nginx + ssl 1.0.0(Macportsから) 編集:Jerzykのコメントに応じて、応答を組み立てるコードパスは次のようになります(簡潔にするために編集されています)。 # This returns an objc NSData object, which is an array.array # when pushed …

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