There’s a new application server on theblock forRubyists -NGINX Unit. As you could probably guess by the name,it’s a project ofNGINX Inc., the for-profit open-source company that owns theNGINX web server. In fall of 2017, they announced theNGINX Unit project.It’s essentially an application server designed to replace all of the various application servers used withNGINX. InRuby’s case, th

個人的に、Nginx で「これは危険だ」と思っている設定があって、Nginx でなにかあるたびにその設定をつい疑ってしまいます。その設定について他の人に話すたびに、いちいち資料を集めるのが面倒になってきたので、今回はその設定項目についての情報をまとめておきます。 まだ理解に自信がない部分があるので、新しい情報が入ってきたら、この記事を適宜修正します。 リバースプロクシ設定の基本Nginx をリバースプロクシとして使う時には、ngx_http_upstream_module でサーバのグループを定義します。そして、サーバ名やロケーション(パス)に対して、送信先のグループを指定します。 以下はマニュアルにある例です。そのNginx サーバへのすべてのアクセスを、backend グループに指定されたいずれかのサーバに送信します。 upstream backend { server backe

MOONGIFTはオープンソース・ソフトウェアを紹介するブログです。2021年07月16日で更新停止しました HTTPサーバとしてnginxを使っているケースは多いかと思います。しかし設定に関する情報はまだまだ多くはなく、動くように設定はしても、それがベストなのかどうか判断できない方も多いのではないでしょうか。 そんな方にお勧めなのがGixyです。nginxの設定ファイルを解析して改善案を提示してくれます。 Gixyの使い方 Gixyのインストールは pip でできます。 pip install gixy 後はnginxの設定ファイルを指定するだけです。 $ gixy /path/to/nginx.conf ==================== Results =================== Problem: [host_spoofing] The proxied Host h

20170214 追記このコミット(URL)で入った proxy_cache_background_update で、stale-while-revalidateを使わなくてもバックグラウンドでキャッシュ更新するように設定できるようになる模様 このコミット(URL)で、Nginxのproxy_cache機能がstale-while-revalidateとstale-if-errorに対応した。次のNginxのバージョンで使えるようになるだろう。 stale-while-revalidate、stale-if-errorとは stale-while-revalidateとは、以前「Cache-Controlヘッダのstale-while-revalidateとは」で書いたとおり、Cache-Controlヘッダで指定できる拡張機能である(RFC)。 max-ageでキャッシュが切れたあとに、

FRESH! でサーバサイドエンジニアをしています @hori_ryota です。 今回は FRESH! における Web パフォーマンス改善の一環として、静的アセット配信の効率化に取り組みました。 実装工数が少なくそれなりに高い効果を上げられたので、参考になれば幸いです。 概要(やったこと) 今回は CI を含めた開発フロー、インフラ整備の領域で Web のパフォーマンス改善に貢献できればいいなと思い、以下の改善を行いました。割りと新しい(前例が少ない)技術を上手いこと取り入れられたかなーと思っています。 Cache-Control の Immutable Extension の適用 Cache-Control: Immutable は、 Conditional GET (リロード時に有効なキャシュを持っていてもサーバに更新確認をするリクエスト。 304 のステータスコードが返る)を防ぐ

ngx_mrubyとは?nginxの設定の内部で、mrubyを使うことができる拡張。nginxとluaの方が使用例が豊富だが、mrubyだとrubyとほぼ互換性がある形で利用できるため、学習コストが低い。 基本的にはmrubyの方が高速らしいが、ノンブロッキング処理できないよね、というところでluaの方が強い部分もある。 詳しい比較はこちらnginxのconfって普通に設定書くとやたら長くなってしまうと思うんですよ。if文の入れ子がNGだったりとか、そもそもif文自体イケてないよね、という話とか by 公式 弾きたいIPを配列で取り扱えたらな〜とか、 外部のyamlに設定ファイル書き出したいなーとか(通常のnginxでできるかどうかはよく知りませんが) そしたらclassも使いたいな〜とか そういう希望があったので、mrubyを使ってみました。 結果、タイトルにある通り、かなりいい感
![[ngx_mruby]使ってみた結果、nginx.confが400行超から70行に](/image.pl?url=https%3a%2f%2fcdn-ak-scissors.b.st-hatena.com%2fimage%2fsquare%2f8669416efc0cab977113ffef0f37baf501ba61ad%2fheight%3d288%3bversion%3d1%3bwidth%3d512%2fhttp%253A%252F%252Ftecheten.xyz%252Fwp-content%252Fuploads%252F2017%252F02%252Fmruby-2.png&f=jpg&w=240)
概要 MongoDBでCPU使用率やロードアベレージが高くないのに処理が詰まっている現象が起きました。 その時間にbatchが動いていてアクセスが急に増えることが原因と言うのは分かっているのですが、負荷的には十分余裕があり不思議な状態でした。 そこでdstatで見るポイント - Carpe Diemでも述べたように、負荷の状態から判断する基準があります。 ロードアベレージを確認する 1が高ければCPU、ディスクI/O、メモリにボトルネックがある 1が低ければTCPコネクションにボトルネックがある 今回の現象から判断するに、TCPコネクションに原因がありそうです。 原因調査 Too many open filesは出ているか ファイルディスクリプタが足りない場合はコネクション数が足りずに処理が詰まってしまいます。 そしてその場合Too many open filesというエラーが出ます。 し
こんにちは。並河(@namikawa)です。 随分と寒くなってきたんで、そろそろ銀座界隈のオススメのラーメン屋の紹介でもしようと思・・・うわなにをするやめくぁwせdrftgyふじこlp; ・・・はい。今日は、ちょっと前にやったnginx + ngx_mruby でSSL証明書の動的読み込みを実現して、作業がとっても楽になったワンって話をしようと思います。 前提の話 弊社では、転職ナビという400近く存在する多くのドメインを持つサイトがあり、そのSSL処理をフロントのnginx で行なっています。 過去、そのバーチャルホストの設定がドメインごとにベタ書きされていた経緯があり、その辺の共通化・書き直しを少しずつやっていて、正規表現や環境変数を駆使することで、随分と設定は共通化できたりするのですが、どうにもならなかったのがSSL証明書の設定である、 ssl_certificate ssl_c
最近 Fluentd の通信プロトコルまわりをアップデートするためにあれこれいじっている*1んだけど、これはおおむね fluent-plugin-secure-forward がサポートしていた内容を Fluentd 組込みの forward plugin でもサポートしますよ、というものになる。 んで問題なのが secure-forward は SSL/TLS での接続のみしかサポートしてなかったんだけど forward では生の TCP で通信する*2ので、本当に secure-forward と forward それぞれの実装間で互換性が保たれているのか、直接的には確認する手段がない、ということになってしまう。 TCP server の SSL/TLS 化 一方世の中には SSL/TLS ターミネータという機能があって、たとえばロードバランサなんかがこの機能を持っている。何をやるかと
Summary ngx_mruby を使って、プライベートな S3 にアクセスできるようにします。 Operation verification Ubuntu FFI ngx_mruby qtkmz/mruby-digest-ffi HMAC-SHA1 を使うために使用しますiij/mruby-digest でもできるかもしれませんが、試していませんiij/mruby-pack Base64 を使うために使用します Configurationbuild_config.rb MRuby::Build.new do |conf| ...(省略)... conf.gem :github => 'iij/mruby-pack' conf.gem :github => 'qtkmz/mruby-digest-ffi' ...(省略)... endnginx.conf location ~*

概要 以前NginxでHTTP/2 - Carpe Diemを書きましたが最近改めて確認してみると のようにHTTP/2が使えていないことが分かりました。今回はこの問題に対応します。 原因 TLS上でのプロトコルのネゴシエーションは以下の2つがあるのですが、 ネゴシエーション ポイント NPN 使用出来るプロトコルのリストをサーバが提示しクライアントが選択する ALPN 使用出来るプロトコルのリストをクライアントが提示しサーバが選択する SPDYがまだ使えていた時にはChromeもNPNに対応していたのですが、HTTP/2に本格的に対応してからALPNのみにしか対応しなくなりました。またAndroidのHTTPクライアントであるgithub.com もALPNでないといけないので、ネイティブアプリでHTTP/2を扱う上でやはりALPNに対応する必要があります。 ALPNに対応するにはOp

第5回ペパボテックカンファレンス〜インフラエンジニア大特集〜 で発表した資料です http://pepabo.connpass.com/event/30348/

Optimize, deliver, and secure apps across the entire enterprise withNGINX What isNGINX?NGINX has evolved from a web server to a comprehensive platform for app delivery, optimization, andsecurity inKubernetes environments. Now, with the SaaS-based web consoleNGINX One, enterprises can manage web traffic, load balancing,APIgateway capabilities, andsecurity in a single, easy-to-use package.

最近まで、SSL暗号化通信は「あると好ましい機能」という程度にしか考えられていませんでした。そのため、安全なのはアプリのログインページだけというサービスが数多く存在していました。 しかし、状況は良い方向へと変化しています。現在では暗号化は必須と考えられ、ほとんどの開発者が導入を義務付けています。また、巨大検索エンジンGoogleでは、SSLの導入が検索結果の順位を決定する要因にさえなっています。 しかし、SSLが広範に普及しているにも関わらず、セキュアなWebサービスを構築することは、未だに面倒で、時間がかかり、エラーの原因になりやすいと考えられています。 最近この分野では、 Let’s Encrypt が、SSL証明書をより広く普及させ、Webサイトのセキュリティ維持に係るワークフローを大幅に簡略化しようと取り組んでいます。 強力なWebサーバNginxや、他のハードニング方法と組み合わ

フロントエンド速度改善をしようとして参考にしたもの - $shibayu36->blog; という記事を以前に書いたのだけど、結局何をやったか書いて欲しいと社内で言われたので、今回のフロントエンドの速度改善でやったことについて書いてみる。そこまで大したことはやってないので参考程度にどうぞ。 前提 ページのレンダリングが遅いと思い始めたので改善をすることになったのだが、改善をし始めたところChromeのアップデートがあり爆速になってしまった(FirefoxやSafari等はもともと速かった)ので、では明らかにやったほうが良いことだけやりますかという話になった。そのためあんまりbefore/afterもちゃんと取っていないので、今回はやったことの紹介くらいに留める。 やったこと 計測や調査をしてみたところ、以下のようなことはやってしまったほうが良いということになった。 静的ファイルに適切にEx
東京でウェブオペレーションエンジニアをしている id:dekokun です。 ここ数年、HTTP/2 or SPDYが話題ですよね。nginxが1.9.5からSPDY対応を切ってHTTP/2の設定ができるようになったり、はてなでも以下ブログにも記載されているように、SPDY or HTTP/2も積極的に導入していっています。 developer.hatenastaff.com 先日、AWSの環境にてSPDYを導入したのですが、導入していくまでにはやはり若干の苦労がありました。そこで、SPDY or HTTP/2をどのように導入していったか及びそこで起きた問題点の解決策等をまとめようと思います。 なお、この記事では"HTTP/2 or SPDY"と書いていますが、SPDYはHTTP/2にその座を譲ろうとしている立場となっています。具体的には、今年の5月にChromeがSPDYのサポートを切る
概要 Apacheセキュリティ設定と同等程度の設定を目指します。 Apacheとの対比のために、Nginx上設定が不要な項目も設定不要として記載します。 SSLの設定はここでは記載していません。 想定環境NginxのMainlineの最新版を使います。 現時点(2016/1/27)の最新版は1.9.10なのでそれを使います。 Stableではなく、Mainlineを利用します。 StableとMainlineの違いはnginx開発者コメント:nginx 1.8およびnginx 1.9リリースについてには以下のようにあります。 ステーブルラインとメインラインの重要な違いは、メインラインはインフラストラクチャ操作に影響を与える可能性があり、開発APIの変更がある場合があるため、nginxのサードパーティ製モジュールや拡張機能に影響を及ぼす場合があります。それ以外は、安全にご利用いただけます。

リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く