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

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

1
ログ名の変数-nginx
私はnginxに次のデフォルトのサーバーセットアップを持っています: # Default HTTP Server server { listen 80 default; server_name _; access_log /var/log/nginx/$server_name.access.log; error_log /var/log/nginx/$server_name.error.log; server_name_in_redirect off; location / { root domain.com/public; index index.php; try_files $uri index.php; } location ~ \.(html|jpg|jpeg|gif|png|ico|css2|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js)$ { root /path/to/domain.com/public; expires 30d; break; } charset utf-8; location ~ \.php$ { include /opt/nginx/conf/fastcgi_params; fastcgi_pass 127.0.0.1:9000; fastcgi_index …
12 nginx 


4
リファラーに基づいた異なるnginxルール
WP Super CacheでWordPressを使用しています。Googleからの訪問者(google.co.in、google.co.ukなど、国固有のすべてのリファラーを含む)にキャッシュされていないコンテンツを表示してほしい。 私が望む方法で動作していない私のnginxルールがあります: server { server_name website.com; location / { root /var/www/html/website.com; index index.php; if ($http_referer ~* (www.google.com|www.google.co) ) { rewrite . /index.php break; } if (-f $request_filename) { break; } set $supercache_file ''; set $supercache_uri $request_uri; if ($request_method = POST) { set $supercache_uri ''; } if ($query_string) { …

2
Apache、Nginx、または他のWebサーバーで実行されている場合、PHPで検出する方法は?[閉まっている]
閉まっている。この質問はトピック外です。現在、回答を受け付けていません。 この質問を改善したいですか? 質問を更新することがありますので、話題のサーバー障害のため。 2年前に閉店。 最初に私はこの変数を知っています: _SERVER["SERVER_SOFTWARE"] 私のアプリケーションの1つで、PHPスクリプトからそれが実行されているWebサーバーを確認したいです。基本的には、ブロガーがいくつかの設定を調整するのに役立つワードプレスプラグインになります。 ApacheとNginx用に別のプロセスを作成し、2つの異なるワードプレスプラグインとしてコードをリリースすることも考えていました。 それから、PHPにWebサーバーを完全に検出するための完全な方法があるかどうか知りたいと思いました。 すべての場合を考慮してください:: Apache、Nginx、Apache + Nginx、ApacheモジュールとしてのPHP、fastcgiを使用したPHP、php-fpm、lighttpd、IISなど また、アプリケーションがコンボとプロキシの存在を検出することも重要です。 おかげで、 -ラーフル

3
プライマリWebサーバーとしてnginxを使用することのマイナス面は?
Apacheと連携してプロキシングWebサーバーとしてnginxを使用している何百万ものWebサイトを見てきました。しかし、デフォルトのウェブサーバーとしてのみnginxを実行しているサーバーはほとんどありません。そのような構成の主な欠点は何ですか? 私はいくつかを見ることができます: .htaccessのようなディレクトリごとの構成ファイルを使用できないため、すべての構成変更はメインサーバーの構成ファイルに対して行う必要があり、サーバーの再読み込みが必要です。しかし、pecl htscannerはそれらをphp設定で補正できます nginxのmod_phpが利用できない。これは、たとえばphp-fpmで補うことができます。 他は何ですか?なぜApacheを落としてnginxや他の軽量なソリューションに移行しないのですか?おそらく、いくつかの特別な理由がありますか? 編集:この質問は主にLAMPスタックでの作業に関するものです。

4
Nginxログをローテーションする適切な方法
私はnginxログのローテーションを達成したい: 余分なソフトウェアなしで動作します(つまり、「logrotate」がなければ最適) 日付に基づいた名前で回転したファイルを作成します 最良のアプローチはPostgreSQLのようなものです。つまり、log_filename構成変数でstrftimeスタイルの%Y-%m-%dを指定でき、ログは日付(または時刻)の変更を自動的に変更します。 Apacheからの別のアプローチ-パイプを介してrotatelogsプログラムにログを送信します。 私が検索できる限り-そのようなアプローチは存在しません。私ができることは、dateextオプションを指定してlogrotateを使用することだけですが、独自の欠点があり、PostgreSQLで| rotatelogsまたはlog_filenameのように機能するものを使用したいのです。

6
空のgif(1x1 pix)ファイルはどのような目的で使用されますか?
空のgif画像を使用して何らかの形でパフォーマンスを向上させることについて言及しているランダムページがいくつかあります。また、nginxにはこの目的のためのモジュールがあります。私が理解できないのは、この小さなファイルを提供することが、Webサーバーからのパフォーマンスまたは知覚される応答性を向上させることになっていることです。誰もが私がその利点を理解するのを助けることができますか?

1
1つのサブディレクトリを除くすべてのリクエストをHTTPSにリダイレクトします
自己署名証明書からnginx Webサーバーの証明書を暗号化しようとしています。 現在、私はへのすべての要求をリダイレクトhttp/80するhttps/443私はしばらく前に作成した自己署名証明書を使用しています、。 今-私が理解していることから、Let's Encryptはポート80にリクエストを行います(私はwebrootオプションを使用していますcertbot)これらの要求はリダイレクトされ、証明書の生成が失敗します。 ポート80でリッスンし、次のサーバーブロックでこれを達成しようとしました。 server { listen 80; server_name sub.domain.tld; server_tokens off; location /.well-known { root /var/www/letsencrypt; } location / { return 301 https://$host$request_uri; } } しかし、へのリクエスト/.well-knownはhttps/443とにかくリダイレクトされます。 http/80へhttps/443のリクエストを除くすべてのリクエストをにリダイレクトするにはどうすればよい/.well-known/ですか?

2
Nginxキャッシングシンボリックリンク
Webサーバーに展開システムがあり、アプリが展開されるたびに、タイムスタンプ付きの新しいディレクトリが作成され、新しいディレクトリへの「現在の」シンボリックリンクが作成されます。これはすべてApacheでうまく機能しましたが、設定した新しいnginxサーバーでは、新しいシンボリックリンクの代わりに「古い」デプロイメントのスクリプトが実行されているようです。 私はこれを解決する方法に関するいくつかのチュートリアルと投稿を読みましたが、あまり情報がなく、何も機能していないようです。これが私のvhostファイルです。 server { listen 80; server_name ~^(www\.)?(?<sname>.+?).testing.domain.com$; root /var/www/$sname/current/public; index index.html index.htm index.php; location / { try_files $uri $uri/ /index.php$is_args$args; } location ~* \.(jpg|jpeg|gif|png|bmp|ico|pdf|flv|swf|exe|html|htm|txt|css|js) { add_header Cache-Control public; add_header Cache-Control must-revalidate; expires 7d; } location ~ \.php$ { #fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php/php7.1-fpm.sock; include fastcgi_params; fastcgi_param DOCUMENT_ROOT $realpath_root; fastcgi_param SCRIPT_FILENAME …
12 nginx  php-fpm  cache  php7 

1
nginx $ ssl_client_i_dnの形式が突然変更されたのはなぜですか?
顧客の認証にクライアント側の証明書を使用しています。 セットアップは次のとおりです。Djangoアプリケーションの前にnginxがあります。私たちのnginxの設定では、我々は(仕事に実際のクライアントサイド証明書の検証を取得するために必要なパラメータを持っているssl_client_certificate、ssl_verify_clientなど)、および uwsgi_param X-Client-Verify $ssl_client_verify; uwsgi_param X-Client-DN $ssl_client_s_dn; uwsgi_param X-SSL-Issuer $ssl_client_i_dn; つまり、これらの変数の値をDjangoアプリに取得します。Djangoアプリは、この情報を使用して、接続しているユーザーを特定し、それらを承認します。 証明書を使用してログインできない人々についてのレポートを突然取得し始めたとき、何ヶ月も問題なくこれを正常に使用しています。$ssl_client_s_dnand $ssl_client_i_dn値の形式が、スラッシュで区切られた形式から変更されたことが判明しました。 /C=SE/O=Some organziation/CN=Some CA カンマ区切り形式に: CN=Some CA,O=Some organization,C=SE これを解決するのは簡単でしたが、その理由はわかりません。だから私の質問は本当にです: の価値は$ssl_client_s_dnどこから来ますか?nginxによって設定されていますか?クライアント? この値が持つことができる形式のドキュメント/仕様はありますか?名前はありますか?

3
「service nginx start」を使用してNginxがハングする
実稼働サーバー用のカスタムパスを使用してnginxをコンパイルし、次を使用してサービスを開始/再起動しようとしています。 service nginx start または service nginx restart シェルを返さずに新しい行に入ります: 問題は、serviceコマンドを使用してnginxを制御できないことです。サービスは実際に実行されますが、シェルが返されないので、取得するには常にctrl+ cを押す必要があります。 また、nginxは独自のnginxコマンドで呼び出すと正常に実行され、を使用して簡単に停止またはリロードできることにも言及する必要がありますnginx -s stop/reload。 この問題もsystemctl start nginx同様に使用し続けますが、うまくsystemctl stop nginx機能します。 情報: $ lsb_release -a Distributor ID: Ubuntu Description: Ubuntu 15.10 Release: 15.10 Codename: wily $ uname -r 4.2.0-27-generic $ nginx -V nginx version: nginx/1.9.11 built by gcc 5.2.1 20151010 (Ubuntu 5.2.1-22ubuntu2) …

1
間違ったホストヘッダーセットを持つリクエストをブロックするにはどうすればよいですか?
私はnginxを使用してウェブサイトを提供しています。サイトのドメインと一致しないHTTP「Host」ヘッダーを含むすべてのリクエストをブロックしたいと思います。 具体的には、nginx.confに次の2つのサーバーブロックが含まれています。 server { # Redirect from the old domain to the new domain; also redirect # from www.newdomain.com to newdomain.com without the "www" server_name www.olddomain.com olddomain.com www.newdomain.com; listen 80; return 301 $scheme://newdomain.com$request_uri; } server { server_name newdomain.com localhost; listen 80; # Actual configuration goes here... } ホストがwww.olddomain.com、olddomain.com、www.newdomain.com、またはnewdomain.comではないトラフィックをブロック(つまり、444ステータスコードを「返す」)したい。これどうやってするの?
12 nginx 

2
Nginx regex vhostパターンはPHPサーバー名になります
次のように、正規表現に一致するnginxサーバー定義があります: server_name ~^(?<vhost>[a-z0-9-]+)\.example\.com$; root /var/www/example/$vhost; access_log /var/log/nginx/$vhost.example-access.log; それはすべてうまくいきますが、このドメインはfastcgiとPHP-FPMを使用してさまざまなPHPプロジェクトをホストし、$_SERVER次のような値を受け取ります。 SERVER_NAME => "~^(?<vhost>[a-z0-9-]+)\.example\.com$" HTTP_HOST => "myhost.example.com" ご覧のとおり、SERVER_NAME一致した文字列ではなく、正規表現パターンが挿入されます。それは私には少しバグが多いように見えますが、不必要な詳細が明らかになるというセキュリティ上のリスクも表します(他の構成では、ワイルドカードではなく特定の名前のセットに一致します)。 「SERVER_NAMEの代わりにHTTP_HOSTを使用する」と言うかもしれません-それが単純だった場合のみ-SERVER_NAMEが(驚くことではないが)サーバーの名前を含むことを期待するライブラリがあります。この振る舞いの良いユースケースは本当に見当たらない。
12 nginx 

2
Nginx:IPアドレスをドメイン名にリダイレクト
次のNginx設定を使用します。 server { listen 80; listen [::]:80 default_server ipv6only=on; server_name isitmaintained.com; ... } server { listen 178.62.136.230:80; server_name 178.62.136.230; add_header X-Frame-Options "SAMEORIGIN"; return 301 $scheme://isitmaintained.com$request_uri; } http://isitmaintained.com/にリダイレクトしようとしhttp://178.62.136.230/ていますが、この構成を展開すると、Redirect loopこれらのリンクのいずれかまたは両方が発生します。 私は何を間違えていますか?
12 nginx  redirect 

3
nginxのリクエストごとの一意のIDを記録する方法はありますか?
このためのサードパーティモジュールがいくつかあるようです https://github.com/newobj/nginx-x-rid-header https://github.com/hhru/nginx_requestid ただし、可能であれば、nginxを再構築したくないので、これらのモジュールを両方とも使用する必要があると思います。私の最初の試みは、うまくいかなかったものを使用$msecする$pidことでした(同じミリ秒で2つのリクエストを処理するプロセスがありました)。私は読んだことが$connectionあり、それはと連動して動作するよう$msecです。これは機能しますか、またはサードパーティのモジュールを使用せずに、より良い方法がありますか?
12 ubuntu  nginx 

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