タグ

nginxに関するmasudaKのブックマーク (59)

  • Nginxのproxy_next_upstreamが意図した挙動にならない問題を調べた - らっちゃいブログ

    どうもこんにちは。racchai です。 Nginxの設定が意図通りの動きにならなくていろいろ調査したので、共有したいと思います。 proxy_next_upstream とは 何が問題なのか proxy_request_buffering を無効にしてみる 解決方法 まとめ proxy_next_upstream とは Nginx を複数サーバー分散構成のロードバランサー(リバースプロキシ)として動作させる際に指定するディレクティブです。 バックエンドサーバーとの通信を行い、何が起きたら次のサーバーへリトライするかを定義するというものになります。 例えば、レスポンスが 500 エラーだったら次のサーバーへリトライというような設定をすることが可能です。 何が問題なのか proxy_next_upstream: error という設定に問題がありました。 これはバックエンドサーバーとの通信中

    Nginxのproxy_next_upstreamが意図した挙動にならない問題を調べた - らっちゃいブログ
  • Apacheとnginxのリバースプロキシ挙動差(バッファリング) - Qiita

    Apacheとnginxでは,リバースプロキシのバッファリングにまつわる挙動差があります. nginx デフォルトでリクエストはバッファリングされる. 転送先へのリクエストは,nginxがリクエストを受信し終えた後. ただし,nginx 1.7.11以降はproxy_request_bufferingオプションで無効化できる. Apache リクエストはバッファリングされない. 転送先へのリクエストは,Apacheのリクエスト受信途中から. バッファリングによる利点・欠点 利点 低速なクライアントの影響を受けない. unicornのworkerがリクエスト受信待ちで占有… ということがなく,workerが効率良く捌けるようになる. 転送先Webアプリケーションのセッション数(unicornのworker数)が限られる場合は効果的. 欠点 メモリやディスクを消費する. リクエストが数百MBを

    Apacheとnginxのリバースプロキシ挙動差(バッファリング) - Qiita
  • nginx ちょっと不思議だったリクエストリトライのお話 - Cybozu Inside Out | サイボウズエンジニアのブログ

    こんにちは、Sustain チームの山口です。 今サイボウズリモートサービスというVPN・中継サービスで使用する L7LB を nginx に移行しようといろいろ調査をしています。 nginx をリバースプロキシとして使用する際に少々障害となる動作があり、それに関するアップデートが最近あったので、今回はそのお話です。 3行で分かる記事の内容 nginx をリバースプロキシとして使う場合、リクエストがバックエンドサーバに二重で飛ぶ可能性がある 対策として proxy_request_buffering off が使えそうだが、使えない nginx 1.9.13 で仕様変更が入り、POST, LOCK, PATCH メソッドのリクエストは二重で飛ばないことが保証された nginx の受動的な health check とリクエストのリトライ動作 nginx はリバースプロキシとして使う場合に

    nginx ちょっと不思議だったリクエストリトライのお話 - Cybozu Inside Out | サイボウズエンジニアのブログ
  • nginx に実装された gRPC サポートを試してみる - Qiita

    Announcing gRPC Support in NGINX ということで、nginx 1.13.9 で gRPC サポートが入り、HTTP と同じように gRPC ストリームを扱えるようになるようです。めでたい! grpc_pass ディレクティブが新規に実装され、grpc:// と grpcs:// なバックエンドに対してリバースプロキシを行えるようになるようです。これを使って、 TLS 終端を nginx にやってもらったり 複数のバックエンドを置いて柔軟にロードバランスしてもらったり 同一のエンドポイントに複数 gRPC service を設定して、nginx にルーティングしてもらったり などの設定をすることが可能になるようです。 まだ正式にリリースされているわけではないので、今回は HEAD を持ってきて、リリースに載っている例を試してみます。 下準備 今回は適当に EC2

    nginx に実装された gRPC サポートを試してみる - Qiita
    masudaK
    masudaK 2018/03/21
    助かる
  • Using the Forwarded header | NGINX

    Analytics cookies are off for visitors from the UK or EEA unless they click Accept or submit a form on nginx.com. They’re on by default for everybody else. Follow the instructions here to deactivate analytics cookies. This deactivation will work even if you later click Accept or submit a form. Check this box so we and our advertising and social media partners can use cookies on nginx.com to better

  • Nginx設定のまとめ

    はじめに 僕は盲目的にunicornを起動するためだけにnginxを使っていて、設定ファイルの内容とかをほとんど知らない。 なので、ここにnginxの設定内容をまとめる事で自分自身が覚えようと思う。 普段使う大抵の設定は記載しているつもりです。 記載内容は実際に試したものと試してないものが混在してるので、誤った設定などがあるかもしれないのでその辺はコメントでご指摘いただけると助かります。 インストール インストールについては僕が書くより他の人の記事を見た方がいいと思う。 centosに入れるなら以下の記事が参考になる。 CentOS6.xにてnginxの最新版をインストールする手順 CentOS 6.5でnginxを動かす為の最低限の設定 またchefでインストールする場合は以下の記事が役にたつ。 Chefでnginxを導入してみる ChefでNginxをインストールするときにハマった c

    Nginx設定のまとめ
  • 雰囲気でNginxのモジュール書いてみた - Man page of CHIKU_WAIT(2)

    作るまでの流れ 今、GMOペパボ株式会社の福岡支社でインターンをしています、chikuwaitです。ペパボ研究所の松 亮介 / まつもとりー (@matsumotory) | Twitterさんとry's boot campという三日間たのしいたのしいことをしていました。まつもとりーさんとどんなことしてたのかというと、WEBサーバ全般の座学とか、Nginxを触ったりという感じのことをしてました。 全体的な流れとしてはこんな感じ。 1日目:Webサーバの基礎から代表的なWebサーバ実装、モジュールハンズオン 2日目:Webサーバのマルチプロセスやスレッド、レースコンディションの話、開発 3日目:退勤までにNignxのモジュールを雰囲気で頑張って書く 何作ったの github.com Ngx_memory_leak_killerというnginxのメモリ最大使用量が上限値を超えたら自動でプロセ

    雰囲気でNginxのモジュール書いてみた - Man page of CHIKU_WAIT(2)
  • PHP, Python, Golang を NGINX Unit で動かしてみた - /var/log/study

    NGINX Unit ホームページは以下 www.nginx.com もしくはミラーだけどGitHubが以下となる github.com RestAPIやJSONで設定できる、phpPHP-FPMpythonのwsgiサーバーなど言語ごとのアプリケーション・サーバーを集約したアプリケーションサーバーという感じ。なのでNginxの後ろで動くサーバーという認識で大丈夫なのかな? まだversionは0.1なので、今後どんどん成長していくはず。 現状は以下に対応しているとのこと Python 2.6, 2.7, 3 PHP 5, 7 Go 1.6 or later ざっくりとした所感 プロダクトに関して 言語ごとのミドルウェア運用がNGINX Unitに集約されて嬉しい可能性がある Docker + NGINX Unit も嬉しいが、NGINX Unitだけでも十分に嬉しいかも ベンチマーク

    PHP, Python, Golang を NGINX Unit で動かしてみた - /var/log/study
  • Nginxで、リクエストを複製するmirrorモジュールが標準搭載された - ASnoKaze blog

    [20170809追記] nginx-1.13.4に ngx_http_mirror_module は含まれました Nginxで、リクエストを複製するmirrorモジュールがコミットされ、何もせずとも使用できるようになりそうです(現状最新コミットをビルドする必要あり)。 例えば番環境のproxyからリクエストを複製して開発環境に流すような事も出来ます。もちろん複製処理は来のリクエスト処理をブロックしません。 例えば以下のように、mirrorに来たリクエストを複製してバックエンドサーバに投げるようにしてみます conf server { listen 80 ; server_name localhost; mirror_request_body on; log_subrequest on; location /mirror { mirror /proxy; #/proxy宛にリクエストを

    Nginxで、リクエストを複製するmirrorモジュールが標準搭載された - ASnoKaze blog
  • nginxのproxy_passの注意点 -- ぺけみさお

    nginxをリバースプロキシにする場合に使用するproxy_passディレクティブは、URIが与えられた場合と、そうでない場合で挙動が異なる。 どういうことかというと、以下の1.と2.は別々の結果となる。proxy_passディレクティブの引数に注目して欲しい。 # 1. specified with a URI location /name/ { proxy_pass http://127.0.0.1/; } 1.はproxy_passディレクティブに完全なURIを与えた例である。この場合http://example.com/name/fooへのアクセスは、/nameが削除されたhttp://127.0.0.1/fooへ転送される。 2.はproxy_passディレクティブに完全なURIを与えなかった例である。この場合http://example.com/name/fooへのアクセスは、

  • https://remotestance.com/blog/2903/

  • GCP HTTP(S) load balancing 配下のnginxでクライアントIPを取得する方法 - Hateburo: kazeburo hatenablog

    GCP HTTP(S) load balancing の X-Forwarded-For ヘッダは少し変わっているのでメモ。 X-Forwarded-For とクライアントIP ELBや他のproxyを使って、その配下のサーバにリクエスト元のIPアドレスを伝える際には、X-Forwarded-For ヘッダが使われます。 X-Forwarded-For: $remote_addr リクエストにすでにX-F-Fヘッダがあった場合は、後ろに追加します。 X-Forwarded-For: $http_x_forwarded_for, $remote_addr となります。 X-F-Fを受け取ったサーバでは、アクセス元のIPが信用できるIPアドレスまたはIP帯域の場合に、X-F-Fの最後のIPアドレスを、remote_addrとして利用します。 nginxでは ngx_http_realip_mo

    GCP HTTP(S) load balancing 配下のnginxでクライアントIPを取得する方法 - Hateburo: kazeburo hatenablog
    masudaK
    masudaK 2017/02/21
    先日教えて頂いた内容が!
  • 宁波逼拘旅行社

    宁波逼拘旅行社
  • Setting headers with NGINX auth_request and oauth2_proxy

    I want to use the auth_request and oauth2_proxy to set a header upon a successful authentication request and then pass that through to the next proxy inline that will handle the actual request. I've setup NGINX and the various proxies to do their thing, however I'm unsure how to set the header from the server (AUTH PROXY in diagram) that I'm using for the auth request such that that header is pass

    Setting headers with NGINX auth_request and oauth2_proxy
  • nginxパフォーマンスチューニング〜静的コンテンツ配信編〜 - Qiita

    今回はHTMLCSSJavascriptといった比較的軽量な静的コンテンツの配信をnginxでやるケースに絞ってチューニングする際のポイントについて紹介しようかと思います。 (注:worker_rlimit_nofileやsysctl.confのネットワーク周りの設定のような定石的なチューニングについてはあえて解説しないのであらかじめご了承ください。) コンテンツをgzip圧縮する 何はともあれgzip圧縮です。ネットワーク帯域に比べればCPUリソースなんて安いものです。 しかし、多くの場合これだけでは十分ではありません。何故ならnginxはデフォルトではContent-Typeがtext/htmlのコンテンツしか圧縮しないためです。圧縮対象のContent-Typeを増やすにはgzip_typesを使います。 単純なWebサイトであれば上記の設定で十分ですが、場合によってはappli

    nginxパフォーマンスチューニング〜静的コンテンツ配信編〜 - Qiita
  • ハイパフォーマンスngx_lua | メルカリエンジニアリング

    Site Reliability Engineering(SRE) Teamの@cubicdaiyaです。 今回は数あるnginxのサードパーティモジュールの中でも一際強力で、メルカリでも活用しているngx_luaの便利な活用方法や最適化集について紹介します。 ngx_luaは軽量スクリプト言語のLuaでnginxを拡張できるモジュールです。 nginxの設定ファイル内にLuaのコードを埋め込んだり、nginxの拡張モジュールをCではなくLuaで開発することができます。以下はngx_luaにおける「Hello, World!」です。 location / { content_by_lua 'ngx.say("Hello, World!")'; } 上記のロケーションにHTTPでアクセスするとnginxはボディが「Hello, World!」のレスポンスを返します。 なお、先月末にリリースさ

    ハイパフォーマンスngx_lua | メルカリエンジニアリング
    masudaK
    masudaK 2016/12/04
    把握せねば。
  • 3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜

    OpenRestyはnginxのほかにngx_luaをはじめとするCで書かれた各種サードパーティモジュールとngx_luaのAPIを利用したrestyモジュール、そしてLua/LuaJITで構成されています。 OpenRestyに含まれているnginx自体は家のnginxと基同じなので、別にOpenRestyを利用しなくても自分でngx_luaを組み込んだり、サーバ上にrestyモジュールを配布することで似たような環境を構築することは可能ですが、OpenRestyであれば主要なモジュールやライブラリが./configure、make、make installの一連の流れですべてゴソッとインストールされますし、OpenRestyのconfigureスクリプトはnginxのconfigureスクリプトを継承したものなのでnginxのconfigureオプションをほぼそのまま利用することもで

    3つのnginxをうまく使い分けよう〜nginx、OpenResty、Tengine〜
  • OpenResty で証明書の動的読み込み - Qiita

    ssl_certificate_by_lua* ディレクティブを使用することで、証明書を動的に読み込ませることが可能です。 例 クライアントから送られてきた ClientHello の SNI 拡張に含まれているサーバ名に対応する証明書を読み込んでいます。 対応する証明書が見つからない場合は ServerHello を返さずに、Internal Error (80) のアラートが返ります。 http { lua_shared_dict certs 10m; server { listen 10443 ssl; ssl_protocols TLSv1.2; ssl_certificate certs/www.example.com.pem; ssl_certificate_key certs/www.example.com.key; ssl_session_tickets on; ssl_s

    OpenResty で証明書の動的読み込み - Qiita
  • nginxにおけるmapとその応用 - Qiita

    set $device "pc"; if ( $http_user_agent ~ iPhone) { set $device "iphone"; } if ( $http_user_agent ~ Android) { set $device "android"; } proxy_set_header X-Device $device; このように特定の条件毎に変数の値を代入して各種ディレクティブの動作を変更する、といったニーズは現実のシステムでは結構あります。ただ、ifディレクティブで分岐させるような設定はせいぜい数個くらいが限界でしょう。 また、nginxのifディレクティブはネストや条件の複数指定ができないのでちょっと凝ったことをしようとすると設定がかなり複雑になりますし、If is Evilという言葉があるくらいnginxではifを多用するスタイルはあまり推奨されていません。 こ

    nginxにおけるmapとその応用 - Qiita
  • nginxをdockerで動かす時のTips 3選

    こんにちは。CTOの馬場です。 最近利用する機会が増えてきたdockerネタです。 nginxを動かすときのTipsを3つ紹介します。 foregroudで起動する dockerではコマンドをforegroundで動かさないとコンテナが停止してしまいます。 nginxはデフォルトはデーモンとして動くので、foregroundで動くように設定しましょう。 nginx.confで設定するならこうです。 daemon off; Dockerfileの起動コマンドで指定するならこうです。 CMD ["/usr/sbin/nginx", "-g", "daemon off;"] 動的な設定を外部化する イメージの中に設定値を入れちゃうのはダサいですよね。 コンテナ起動時に動的に設定したいものです。 dockerの場合は docker run 時に -e で環境変数を指定できるので使いましょう。 do

    nginxをdockerで動かす時のTips 3選
    masudaK
    masudaK 2016/10/25
    さすが馬場さんや