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

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

1
nginxでsslクライアント証明書の検証が失敗する
nginxでsslクライアント認証をセットアップしようとしています。自己署名したルートCAを作成しました。それを使用して、サブCAを作成しました。このサブCAを使用して、クライアントの証明書を作成しました。サブCAとルートCAを新しいファイルに連結しました。クライアント証明書を次のように確認しました。 $ openssl verify -purpose sslclient -CAfile auth-root.crt testcert.crt testcert.crt: OK auth-root.crtは、連結されたサブCAとルートCAです。testcert.crtはクライアント証明書です。 私はnginxにを使用してauth-root.crtを指定しましたssl_client_certificate。 testcert.crt証明書を使用してHTTPリクエストを行うと、nginxが失敗します。デバッグログをオンにすると、次のように表示されます。 2012/06/21 22:58:47 [debug] 8901#0: *2 verify:0, error:2, depth:1, subject:"/C=US/ST=Florida/L=Tampa/O=Test org/OU=Test OU/CN=AuthCerts TestCA",issuer: "/C=US/ST=Florida/L=tampa/O=Test org/OU=Test OU/CN=Root TestCA" 2012/06/21 22:58:47 [debug] 8901#0: *2 verify:0, error:27, depth:1, subject:"/C=US/ST=Florida/L=Tampa/O=Test org/OU=Test OU/CN=AuthCerts TestCA",issuer: "/C=US/ST=Florida/L=tampa/O=Test org/OU=Test OU/CN=Root TestCA" 2012/06/21 22:58:47 [debug] 8901#0: …

4
nginxでフォールバックエラーページを設定する方法
現在、nginxがいくつかのエラーページと他の「デフォルト」メディアファイル(favicon.icoやrobots.txtなど)を処理するように構成しています。 。 基本的に、私がやろうとしていることは、そのサーバーのルートの下にあるサーバーに特定のファイルを提供することです(例:/var/www/someserver.com/robots.txt)。そのファイルが存在しない場合は、nginxを「デフォルト」、つまり/var/www/default/robots.txtに移動します。これは、(正常に)構成した方法の基本的な要点です。 server { ... root /var/www/someserver.com; location ~* ^/(robots\.txt)$ { error_page 404 = @default; } location @default { root /var/www/default; } } それはうまくいきます。 エラーページに対しても同じことを実行しようとしていますが、それを実行することはできません。 server { ... root /var/www/someserver.com; error_page 404 /404.html; location ~* ^/(404\.html)$ { error_page 404 = @default; } location @default { root /var/www/default; } } …
10 nginx 

1
SSLなしでhttp2を使用したnginx通信を使用したnginx
nginx-proxyとnginx-serverのdockerコンテナがあります。 client browser < > nginx-proxy proxy_passを介したhttp2および443です。 nginx-proxy < > nginx-server はhttp1であり、http2に移動したいのですが、SSLを使用しません。これらは両方とも同じサーバー上にあるため、トラフィックを暗号化するメリットはありません。 私はnginxドキュメントを読んで、彼らはそれがsslなしでhttp2をサポートすると言っています。そのため80 http2;、nginx-server vhostのlistenディレクティブに追加しました。 ただし、ブラウザはWebサイトを表示する代わりに、次の内容のファイルをダウンロードします。 0000 1204 0000 0000 0000 0300 0000 8000 0400 0000 0000 0500 ffff ff00 0004 0800 0000 0000 7fff 0000 0000 0807 0000 0000 0000 0000 0000 0000 01 この問題のようにひどく見えますが、私のbrowser <> nginx問題は問題ではなくnginx <> nginx問題です。nginxはsslなしでhttp2をサポートしているとドキュメントが言っているので、それは存在すべきではありません。 …
10 nginx  http2 

1
nginxのmapディレクティブでいくつかの変数を指定する方法
さて、これとは少し異なる質問があります。2つの変数を同時にマップするのではなく、他の2つをパラメーターとして使用して1つの変数をマップしたいのです。 確かに私はマップディレクティブに関するドキュメントを読みました: バージョン0.9.0より前では、最初のパラメーターで指定できる変数は1つだけでした。 したがって、私はnginx 1.8を持っているので、最初のパラメーターで複数の変数を使用できると期待しています。 これにより、この例では最後の2つのマップディレクティブのようなものを書くことができると思いました。 map $http_user_agent $bot { default ""; "~*Googlebot" "yes"; "~*MJ12bot" "yes"; "~*bingbot" "yes"; etc. } map $request $bot $np { default "" ""; default "yes" ""; "~*newproject" "" "yes"; "~*newproject" "yes" ""; } map $bot $np $regular { "" "" "yes"; "" "yes" ""; "yes" …

2
含めるnginx相対パス
nginx confファイルでinclude、現在のconfファイルに関連する別のconfファイルを指定する方法はありますか? 私は書きたいと思います: server { listen 80; server_name localhost; include "../apis/basic.conf"; ... }

3
nginxが提供する静的ファイル内でnginx環境変数を使用できますか?
nginx設定で環境変数を使用し、nginxが静的ファイル(html、js、css-たとえばAngularJsアプリ)のみを提供するように構成されている場合、nginxが提供するJSファイル内で環境変数を使用する方法はありますか? ?または、これを実行して非静的サーバー(io.js、phpなど)を実行する唯一の方法です。 ところで、nginxの設定では、環境変数をネイティブに使用することはできません。 私は環境について話すときnginxの設定Iにvarsはこの記事のように意味:どのように私はNginx.confで環境変数を使用することができます彼らが使用env APP_WEB_1_PORT_5000_TCP_ADDR;し、$ENV{"APP_WEB_1_PORT_5000_TCP_ADDR"}; ユースケースを正確に説明してください 私の特定の使用例は、Dockerコンテナーにnginxを利用したAngularJSアプリがあることです。このアプリは、別のシステムで実行されているAPIを完全に使用する「単一ページアプリケーション」です。アプリには、Google-Analtyicsコードなどの異なる設定があるため、現在、本番とステージングの間で別のDockerコンテナーを実行しています。この環境固有のデータはconfig.jsファイルに保存され、値は現在ハードコーディングされています。gitのmasterブランチの1つの値とブランチの異なる値ですstaging。制作とステージングの両方で同じコンテナを使用できるように、デザインを変更したいと考えています。私は(それを実行したときに容器の中にENVのVARを渡したいdocker run -e GACODE=UA-12345-6 ...介して、()とENVのVARを使用nginxの持ちenv GACODE;と$ENV{"GACODE"}なりますconfig.jsファイルでは、ハードコーディングするのではなく、渡されたGoogleAnaltyicsコードを使用できます。これが可能かどうかはわかりません(したがって、質問;))。nginxのみを使用すると、コンテナーが単一プロセスになりますが、io.jsを使用する必要がある場合は、複数のリンクされたコンテナーが必要であり、より多くの可動部分がより複雑になります)。

1
sudoを使用せずにnginxログを別のユーザーと共有する方法は?
私のサーバーには2人のユーザーがいます。sudoを使用するものと使用しないもの。nginxログへのアクセスを許可するにはどうすればよいですか /var/log/nginx/error.log sudo使用許可のない別のユーザーにcat /var/log/nginx/error.log?/ home / usernameディレクトリにログインするためのシンボリックリンクのようなものを作成できますか? だから私の質問は- sudo許可なしにユーザーがnginxログをどのようにチェックできるのですか?
10 linux  ubuntu  nginx  logging 

1
ロケーションディレクティブが機能しない
私のNGINXサーバーでは、静的コンテンツを提供するためだけに仮想サーバーをセットアップしています。現時点では、画像に有効期限が設定されるように設定しています。ただし、このための場所ディレクティブを作成すると、すべてが404になります。 私の現在の設定は次のようになっています: /srv/www/static.conf server { listen 80; server_name static.*.*; location / { root /srv/www/static; deny all; } location /images { expires 1y; log_not_found off; root /srv/www/static/images; } } このファイルは/etc/nginx/nginx.confのhttpディレクティブ内に含まれていることに注意してください 私は...のは言わせて、で、画像にアクセスしようとしていますstatic.example.com/images/screenshots/something.png。案の定、画像はにも存在し/srv/www/static/images/screenshots/something.pngます。ただし、上記のアドレスにアクセスしても機能せず、404 Not Foundと表示されます。 ただし、削除して次のようにlocation /images変更location /した場合... location / { root /srv/www/static; } できます!ここで何が悪いのですか?

2
Nginx ssl-SSL:エラー:0906D06C:PEMルーチン:PEM_read_bio:開始行なし
123-regからの証明書を使用してサーバーでSSLを有効にしようとしていますが、次のエラーが発生します。 nginx: [emerg] SSL_CTX_use_certificate_chain_file("/opt/nginx/conf/cleantechlms.crt") failed (SSL: error:0906D06C:PEM routines:PEM_read_bio:no start line error:140DC009:SSL routines:SSL_CTX_use_certificate_chain_file:PEM lib) これは私のnginx設定です: server { listen 443; server_name a-fake-url.com; root /file/path/public; passenger_enabled on; ssl on; ssl_certificate /opt/nginx/conf/cleantechlms.crt; ssl_certificate_key /opt/nginx/conf/cleantechlms.key; } crtとkeyを完全なファイル権限に設定しようとしましたが、違いはありません。 私のcrtファイルは、発行されたcrtとca crtを連結したものです。 更新 私はsperateファイルに両方のキーをコピーしてから「cat mykey.crt >> ca.cert」を実行しようとしました また、キーを同じファイルに手動でコピーしてみました。 何か案は?
10 nginx  ssl 

3
特定のソースIPを使用するプロキシとしてのnginx
私はnginxを使用して静的ファイルを提供し、他のリクエストを一部のTomcatインスタンスにプロキシしています。問題は、Tomcatへの接続にnginxが使用するIPアドレスを選択する方法がわからないことです。 各Tomcatインスタンスは、特定のIPアドレスからのHTTP接続のみを受け入れます。私のサーバーにはこれらすべてのIPがあります。nginxが使用するものを選択できません。 これは私の設定ファイルです: proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; location /integracao/ { proxy_pass http://X.X.X.X:9080/integracao/; } location /solr/ { proxy_pass http://Y.Y.Y.Y:8080/solr/; } 私のサーバーには、AとBの2つのIPアドレスを持つ1つのインターフェースがあります。最初のTomcatに接続するにはIP A、Solrに接続するにはIP Bを使用する必要があります。 誰でもそれを行う方法を知っていますか?
10 nginx  proxy  ip  ip-address 

3
nginxが外部IPアドレスへのリクエストを処理しない
ポート81でnginxを実行しています。Telnetを使用できtelnet 127.0.0.1 81、すべて問題ありません。 しかし、Mac(外部IPアドレス)から自分のマシンにTelnet接続しようとすると、次のエラーが発生します。 telnet: connect to address 109.123.x.x: Connection refused telnet: Unable to connect to remote host これが私の/ etc / nginx / sites-available / defaultファイルです: server { listen 81; ## listen for ipv4; this line is default and implied #listen [::]:80 default ipv6only=on; ## listen for ipv6 root /usr/share/nginx/www; …
10 nginx  ip  ip-address 

1
Nginx製品の古いカテゴリから新しいカテゴリへの単純なリダイレクト
製品を古いカテゴリから新しいカテゴリにリダイレクトしています。 私はそれを次のルールで機能させることができました: rewrite ^/old-category/(.*) /new-category/$1; しかし、「end line」記号$をいつ使用する必要があるのか​​、また、それがある場合とない場合の違いを知りたいのですが。例えば: rewrite ^/old-category/(.*)$ /new-category/$1; また、ユーザーが古いカテゴリー名(製品なし)を書くだけの場合、ユーザーをリダイレクトしたいのですが、カテゴリーリダイレクト専用の新しいルールを作成するか、上記の現在のルールを編集して両方のケースで機能するようにします。 よろしくお願いします。


3
audit2allowなしでnginxがUNIXソケットにアクセスすることをSELinuxに許可するにはどうすればよいですか?
私はでUnixソケットを介してgunicornにnginx転送要求があります/run/gunicorn/socket。デフォルトでは、この動作はSELinuxでは許可されていません。 grep nginx /var/log/audit/audit.log type=SERVICE_START msg=audit(1454358912.455:5390): pid=1 uid=0 auid=4294967295 ses=4294967295 subj=system_u:system_r:init_t:s0 msg='unit=nginx comm="systemd" exe="/usr/lib/systemd/systemd" hostname=? addr=? terminal=? res=success' type=AVC msg=audit(1454360194.623:7324): avc: denied { write } for pid=9128 comm="nginx" name="socket" dev="tmpfs" ino=76151 scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:object_r:httpd_sys_content_t:s0 tclass=sock_file type=SYSCALL msg=audit(1454360194.623:7324): arch=c000003e syscall=42 success=no exit=-13 a0=c a1=1f6fe58 a2=6e a3=7ffee1da5710 items=0 ppid=9127 pid=9128 auid=4294967295 uid=995 gid=993 …
9 nginx  selinux 

1
Real-IPを使用しているときに$ remote_addrの元の値をログに記録する方法
私の環境には、いくつかのシステムを通過するユーザーリクエストがあります。 [クライアント]-> [ELB] ---> [nginx]-> [ウェブ] (ELB = AWS Elastic Load Balancer) これのおかげで答えが、私はnginxの決定と上流側のサーバー(ウェブ)への正しいクライアントのIPアドレスを渡しているX-Forwarded-ForとX-Real_IP、ヘッダー。関連するnginx設定: real_ip_header X-Forwarded-For; set_real_ip_from 10.0.0.0/8; real_ip_recursive on; proxy_set_header X-Real-IP $remote_addr; 私の問題はこれです。nginxのReal IPモジュールは、既存の$remote_addr変数をそのX-Forwarded-For計算結果で置き換えます。これにより、元のクライアントIPが得られますが、実際にリクエストをプロキシ(ELB)に送信したシステムのIPアドレスが失われます。 全体として、クライアントIPを持つことは私にとってより重要ですが、トラフィックの流れを理解(およびデバッグ)できるように、リクエストのチェーン全体をログに記録できるようにしたいと考えています。現在、私はnginxにクライアントIP、自身のIP、および上流サーバーのIPのみを記録させることができます。ELB IPもログに記録できるようにしたいと思います。 私が見るX-Istenceが同じ尋ねた質問を少し運と、2013年に。それ以来何か変更または改善されましたか?

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