Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。この本では、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。 Elastic Beanstalk Linux プラットフォームの拡張 このトピックでは、独自のコマンド、スクリプト、ソフトウェア、設定を使用して Linux プラットフォームを拡張する方法について説明します。デフォルトのプロキシサーバーと設定を変更するには、プラットフォームを拡張する必要がある場合があります。または、プラットフォームがアプリケーションをビルドまたは起動する方法をカスタマイズする必要がある場合があります。
nginx で https と ssh をリッスンする nginx には $ssl_preread_protocol というStream設定が用意されている。これを使うとTLSプロトコルごとに、プロキシ先を変えることができる ただし443 はストリームが使うので、リッスン先をいい感じに帰る必要がある。 全体の接続 全体の接続は、次のようになる。 nginx stream は sshd / https に直接接続しない。 sshd のリッスンポートに直接接続すると、プロトコル不一致が起きて接続できないので、server{ .. } を経由してる。 https に直接接続できるといえばできるが、プロキシプロトコルを設定しやすくするため、server{ .. } を経由してある nginx の設定は次の通り stream 設定を作る。 ssl_preread_protocol で TLSはweb
テレワーク中、自宅サーバのアクセスログを眺めているとDoS攻撃が頻繁にあり、しかもかなりしつこい輩でしたので対応してみました(いままで対応してなかったのも問題ですが汗) とりあえず3つほど対応してみました。相変わらずシツコク攻撃してくるけどまあ自分なりに納得してますw ・DoS攻撃・DDoS攻撃とは?攻撃の目的や種類、事例、対策方法を解説 前提 我が家は、Apache -> Nginx として Nginxを リバースプロキシサーバー としています。そのため Nginx 側でいくつかの攻撃を防いでみることを前提としてみています。 その1:NginxでIPアドレス制限かけてみる(ブラックリスト形式) ログから攻撃者のIPが判る場合、手っ取り早くIPを弾いてみます。下記の様に攻撃者IPをブラックリスト形式で登録してみます。 server { ・ ・ location / { deny 118.1
Apache や Nginx をパッケージ管理でインストールすると設定ファイルはデフォルト状態で配置されます。そのためセキュリティ上無効化しておく設定や追加した方が安心な設定がされていません。本番運用前にやっておくと良いものをまとめました。 Redhat系のパッケージでApacheは2.4系、Nginxは1.1、1.2系とします。 デフォルトページの無効化 ApacheやNginxをインストールして起動後にサーバーにブラウザでアクセスすると次のようなテストページが表示されるようになっています。 このページは正常にインストールされたかの動作確認ページのため本番環境では不要で、場合によってはインストールされているもののバージョン情報などが表示されセキュリティを下げてしまうこともあります。 無効化方法例 [Apache] 以下のファイルの中身を全てコメントアウトする。 ※ファイル削除ではアップデ
背景 https なサービスを限られたユーザーにだけセキュアに提供したい https なサービス/webサイトのテストや, ファイル配布(e.g. simple directory or webdav)など. パスワード制限とか FIDO, WebAuthn はめんどい 自前(社内)だけなら Tailscale などで VPN というてもあるけど, PC で別の VPN サービス使っていたりで共存させるのが難しいときとか. ローカル開発環境の https 化 https://blog.jxck.io/entries/2020-06-29/https-for-localhost.html で 127.0.01 で https 張るのもある. その次のステップとして本番サーバーにデプロイして, テストしたいときなど. サーバー証明書は Let's Encrypt で, クライアントはオレオレで
この記事の目的 最近、爆速でLaravelの環境構築を行うためLaravel Sailがありますが、やはり自身の手でDockerfileからコンテナ環境を構築をしたいと思い、備忘録の意味も込めて記事にしてみました。 何かインフラ環境を構築している気分になれます。 構築するコンテナ nginx Laravel(PHP) MySQL phpMyAdmin 構成 ディレクト、ファイルの構成は以下の通りです。 dockerディレクトリ直下にnginx、phpのDockerfileを作成します。 MySQLとphpMyAdminのイメージはdocker Hubからプルしてきます。 コンテナ実行の定義は、docker-compose.ymlに記述します。
nginx の ngx_http_limit_req_module で rate limit の設定ができる。がパラメータの理解が難しく、当初は設定値の調整に難儀した。背後にある Leaky Bucket というアルゴリズムとその実装を確認することでパラメータもすんなり理解できた。以下調べたことのログを残しておく。 ngx_http_limit_req_module ngx_http_limit_req_module は指定した key ごとに Rate Limit を設定できるというモジュール。key とは例えばリクエスト元の remote_ip で、それごとに「1r/s まで」といった制限を指定できる。 設定はこんな感じ。 http { limit_req_zone $binary_remote_addr zone=myzone rate=1r/s; ... server { ...
はじめに 勤め先でもPHPを使っており自宅でPHPを勉強するために、ローカルでPHP開発環境を整えることにしました。 MAMP(マンプ)でも良いかなと思いましたが、せっかくなのでDockerで作ってみます。 (開発中に色々詰まってしまったところがあるので、備忘録がわりのメモです。) 手順 Dockerによる環境構築 ファイル・ディレクトリの準備 各ファイルの作成 コンテナを起動 サイトにアクセス 1. Dockerによる環境構築 Dockerを使うには、「Docker for Mac」のインストールが必要です。 Qitaに素敵な記事がたくさんあるので、ここでの説明は省略します。 今回はDockerで以下のコンテナを使います。 nginx PHP MySQL PHPMyAdmin 使用するコンテナが複数あるので、今回は「Docker Compose」を使って環境を作っていきます。 2. ディ
概要 Nginx では標準で提供されている limit_conn モジュールを使用して、接続数制限を提供します。 接続数制限によって、同一の接続元からの接続が制限でき、DoS攻撃から防御できます。あるいは、TCPの接続数を制限することによって、高負荷時にもWebサービスの処理を継続させることが目的です。 今回は、Nginx 接続数制限 (limit_conn) の設定方法、ab (apache bench) による接続数制限の検証方法をまとめます。 事前準備 EC2 の Amazon Linux 2 インスタンスを起動します。 インスタンスのUser data 設定に、下記を記載します。Amazon Linux 2 のnginx は、amazon-linux-extrasを使用します。amazon-linux-extras の詳細はこちらを参照。 #!/bin/bash sudo yum
Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? はじめに 初めまして! エンジニアになって数年、今まで本を読むだけでしたが、もっとプライベートで楽しみながら成長したい!自分が学んだ足跡を残していきたい!と思い記事をかきました! 最終的には自在に開発できるようになりたいと思っています。 いろいろな記事を参考にさせてもらっています。 その中でもこれってどういう意味?とかつまづいたところを念入りに書いていこうかと思います。 今回の目的 今回はこちらの記事で調べていた内容を実践してみたいと思い別の記事として作成しました! 「php:<version>-apache」は初歩のチュートリアルで使
OpenSSLを利用したオレオレ認証局(CA)の準備CA 認証局の鍵を作成まずは設定ファイルの格納場所を任意でディレクトリを作成します。 # cd /etc/nginx # mkdir certificates # cd certificatesOpenSSLを利用したオレオレ認証局が利用する鍵(ca.key)を作成します。 # openssl genrsa -des3 -out ca.key 4096# openssl genrsa -des3 -out ca.key 4096 Generating RSA private key, 4096 bit long modulus ........................++ .........................................................++ e is 65537 (0x10001)
Nginx configs. Not the most powerful, productive or the best one. Just useful configs, which I would like to see in default nginx packages out of the box 😆 Bonus: fail2ban, filebeat, dockerfile and docker-compose configs for nginx :) Motivation: I have been using nginx since 2015, and I configured it really for hundreds setups of 30+ companies and startups: sites, apps, websockets, proxies, load
こんにちは、技術戦略室の安田です。普段はLaravelやRailsのようなWebフレームワークの実装と改修を担当しています。 先日Nginxの設定を改修しなければ実装できない部分が発生し、通信苦手なんだよなーと思いつつも実装する過程で設定ファイルの読み方や編集するべきポイントを覚えたので、備忘録として残します。 アプリケーションサーバはPHP7.3.1、フレームワークはLaravel8を使用しています。同じDockerコンテナの中で、NginxとLaravel動かす事を想定しています。 設定ファイル(nginx.conf)の読み方 httpブロックの設定:基本的な設定。ログ、SSL/TSL、Gzipの設定などをする serverブロックの設定:Webサーバ(バーチャルサーバ)毎の設定とWebフレームワークに合わせた設定 locationブロックの設定:アクセスされたパス毎に合わせた設定 N
注: nginx のバージョン要件は 1.9 以降です。nginx をコンパイルするときは、--with-stream を追加する必要があります。例: ./configure --prefix=/data/apps/nginx --with-http_stub_status_module --with-http_ssl_module --with-http_realip_module --with-http_image_filter_module --with-stream Note 1. mysql はデフォルトでポート 3306 を使用するため、nginx tcp リバース プロキシ mysql を設定するときは、そのポートが mysql がリッスンするポートと同じでないことに注意してください。たとえば、3307 2 を使用します。root ユーザーが mysql たとえばデータベース
こんにちは、株式会社アルファドライブ @takano-hi です。AlphaDrive で Web フロントエンドを中心に設計・実装などを担当しています。 今回は、弊社のローカル開発環境で localhost:xxxx といったポート番号が増え続ける問題を解決した話をまとめてみました。 背景 弊社では Next.js を利用したフロントエンドアプリケーションを複数開発しており、今後も増える見込みがあります。 通常 Next.js アプリケーションは、ローカル開発環境の起動時に localhost:3000 にホストされます。 これが複数になると、2つ目以降はそのままではポート 3000 番が占有されていることによるエラーが発生するため、別のポート番号を指定する等の方法で回避することが多いと思います。 さらに、それぞれのプロジェクトごとに Storybook を用意したりすると、必要なポート
はじめにOpenResty と lua-resty-openidc を使って、Apache ではなく、Nginx 系のシングルサインオン(SSO)の Web アプリ動作環境を作成しましたので、その手順を紹介します。構成は、以下です。 SSO は、OpenID Connect の仕組みを利用し、OpenID Connect の OpenID Provider(OP)/Identity Provider(IdP)は、GitLab を利用します。GitLab を OpenID Provider として利用する手順は、以下の別記事を参考にしてください。この記事では、GitLab 側の説明は省略します。 「GitLab as OpenID Connect identity provider をやってみた」 SSO、OpenID Connect とは何かの説明は省略します。 【検証環境】 Ubuntu
[Update: NGINX now officially supports HTTP/3 with QUIC. It is available as part of NGINX 1.25.1 mainline version for open source users. Binary packages for the NGINX preview implementation of QUIC+HTTP/3 are now available for Red Hat Enterprise Linux 9 and Ubuntu 22.04. Get the details here.] The Internet refuses to stand still. Even before the standardization of HTTP/2 in 2015, work had already
みなさん、どうやって nginx.conf を書いてますか。 私は DigitalOcean のジェネレーターを使う方法が最も好きです。 さてここで、TLS関係の設定が多数生成されますよね。でも、それぞれ何を設定しているのでしょうか? http { # SSL ssl_session_timeout 1d; ssl_session_cache shared:SSL:10m; ssl_session_tickets off; # Diffie-Hellman parameter for DHE ciphersuites ssl_dhparam /etc/nginx/dhparam.pem; # Mozilla Intermediate configuration ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers ECDHE-ECDSA-AES128-GCM
こんにちは。エキサイト株式会社の三浦です。 皆さんはNginxでキャッシュを使ったことがありますか? レスポンスごとキャッシュをしてくれるので、使いようによっては非常に有効な機能です。 一方で、レスポンスごとキャッシュすることに起因する注意点もあります。 今回は、私がハマったNginxキャッシュとCookieに関連する、とある問題について説明していきます。 Nginxキャッシュとは Nginxのキャッシュは、Nginxが返すレスポンスをそのままキャッシュしてくれます。 キャッシュがヒットすればアプリケーションコードにアクセスが行かず、Nginxだけで処理が完結するため、サービスのスピードや負荷対策に大きな効果をもたらします。 proxy_cache_path /var/cache/nginx_sample1 levels=1:2 keys_zone=sample1:1m max_size=
Imagine trying to build a modern web application but being constrained to use only the tools available a decade ago. This scenario has been a reality for many developers working with NGINX’s JavaScript module (njs), who have been limited by an ES5-based engine with only select ES6 extensions. While this constraint initially kept njs lightweight and focused, the growing complexity of server-side Ja
以前お話したtrailing slashについて。 http://blog.cosnomi.com/archives/475 意味上の違いはあるけど、実質あまり気にしなくても大丈夫だよねという感じだった。しかし、nginxの設定をしていると見事にハマったのでメモとして残しておきたい。 今回、比較するのは以下のCase1とCase2。 実際どうなるか Case1: Trailing Slash あり http://example.com/japan/hoge にアクセスした場合、proxy_passによってhttp://example.jp/hoge に転送される。http://example.com/japan/ へのアクセスは http://example.jp/ に転送されるはず。 example.jp側ではわざわざ/japanを含めて処理してやる必要がないので、こちらのほうが適切っぽ
クラスターでIngressを動作させるためには、ingress controller が動作している必要があります。 少なくとも1つのIngressコントローラーを選択し、クラスター内にセットアップされていることを確認する必要があります。 このページはデプロイ可能な一般的なIngressコントローラーをリストアップします。 Ingressリソースが動作するためには、クラスターでIngressコントローラーが実行されている必要があります。 kube-controller-managerバイナリの一部として実行される他のタイプのコントローラーとは異なり、Ingressコントローラーはクラスターで自動的に起動されません。このページを使用して、クラスターに最適なIngressコントローラーの実装を選択してください。 プロジェクトとしてのKubernetesは現在、AWS、GCE、およびnginxの
プロセス関連のチューニング worker_connectionsとworker_rlimit_nofile worker_connectionsはworkerプロセスで開ける同時接続最大数です。 高スペックマシンでは要上方調整。 worker_connections 2048;クライアントの最大接続数➗worker_processes数(≒ vCPU数)worker_limit_nofile 8192;最大オープンファイル数➗worker_processes数(≒ vCPU数) worker_connectionsはworker毎のclientの最大接続数を表しています。 defaultは512に設定されていると思います。 リバースプロキシを利用中は1アクセスでworker_connectionが2つ消費されるので通常の2倍に設定する。 クライアント – nginx(1接続分) 通常の場合
Itamae自分メモ[0] Rails&nginx&puma&CentOSのプロビジョニングをしてみるので基本的な設定とか準備 今までインフラ系はほとんどまともに勉強した事がなくて、ライブラリのインストールやVagrantで開発をするのに必要な設定ぐらいしか知識がなかった。RailsとかSinatraのデプロイは社内サーバーかheroku。 しかし、今作ってるモノがどうしてもherokuだと厳しい(レイテンシーとかプラン的な問題)ので、勉強も兼ねてRails+nginx+puma+CentOSな本番環境を作ったみた🔧 で、こういうのは毎日やらないと忘れてしまう……👻 いつもはメモや秘伝のレシピ的なモノを作って置いておくのだけど、プロビジョニングをコードに落としておけば「バージョン変わって動かない」なんて事があっても、(やりたい事orやらないといけない事)は分かるよね❗という事で、一通り
忘れる前にやっとこかなと思って、続きをやることにした。 bufferings.hatenablog.com やりたいこと この2つでデプロイ時間にどれくらい差があるかなぁってことを見たい NLBあり + Service Connectなし NLBなし + Service Connectあり 今日のコードはここにある github.com 環境を再構築 OpenTofuで作っておいたから楽ね。 ❯ terragrunt apply -auto-approve ... Apply complete! Resources: 18 added, 0 changed, 0 destroyed. Outputs: nlb_dns_name = "<生成されたNLBのDNS名>" はい。できた。 ECSのTask Execution Roleが必要だった 忘れてたので追加。こんな感じ。 ❯ git di
Updating NGINX for a DNS Resolver Vulnerability (CVE-2021-23017) Today we are releasing updates to NGINX Open Source, NGINX Plus, and NGINX Ingress Controller in response to a recently discovered low‑severity vulnerability in the NGINX implementation of DNS resolution. For full details and mitigation instructions, see the F5 Security Advisory about CVE-2021-23017. The F5 Security Incident Response
F5 Sites DevCentral Connect & learn in our hosted community F5 Labs The latest threat intel and research to help protect your apps MyF5 Your key to everything F5, including support, registration keys, and subscriptions Partner Central Research and support for partners LearnF5 Guidance, insights, and how to use F5 products Contact F5 Contact F5 Sales Talk to an F5 sales representative Contact F5 Su
2019年8月12日2024年4月10日 この記事では、Flask, uWSGI, nginxそれぞれの役割とインストール方法を説明した後に、上の図のようにFlask, uWSGI, nginxを連携させてHello Worldする方法をコード付きで解説します。コードと設定ファイルには一行一行説明を記載しているので、内容理解にお役立てください。 著者環境 ubuntu: 18.04 python: 3.6.8 役割説明 まず今回利用するFlask, uWSGI, nginxそれぞれの役割について説明します。 Flaskとは FlaskはPythonを使ってWebアプリを簡単に作成するための骨組み(フレームワーク)です。ウェブアプリに必要な機能の骨組みを持っているので、あとは自分が作りたい機能だけを骨組みの周りに肉付けする形で実装することでWebアプリが簡単に作れます。 nginxとは
Deno allows you to run Javascript in a fast, secure environment. Deno is web-oriented and built for modern JS. Similar to Node.js, Deno allows for seamless backend integration with front-end Javascript code. By default, Deno's server is only locally available. To publicly expose the server interface, Nginx can be used as a proxy. To run this, you will need a Red Hat or Debian-based Linux VPS. Step
【Nginx】設定ファイルとは(nginx.conf、conf.d、sites-available、uwsgi_paramsなど) 本記事ではWebサーバーソフトウェアのNginxにおける、設定ファイルについて詳しく解説していきます。 設定ファイルは/etc/nginxディレクトリに格納されており、nginx.confやuwsgi_params、conf.d、sites-availableといったファイルやディレクトリが存在します。 それぞれが重要な役割を持っており、NginxでWebサーバーを構築するためにはそれぞれの役割を知っておく必要があります。 本記事を通して各設定ファイルについて学んでいきましょう。
defaultは60秒 sudo vi /etc/nginx/nginx.conf httpブロックのタイムアウト時間を変更する(秒) http{ ... proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; ... } 特定のサーバだけ、時間変えたい時 server{ ... proxy_read_timeout 300; proxy_connect_timeout 300; proxy_send_timeout 300; ... } 再起動 sudo systemctl restart nginx 確認 systemctl status nginx
本記事では、Docker を用いて PHP の開発環境を構築します。Docker に詳しくない方でも理解しやすいように、Docker の基礎概念と用語も解説しています。 本記事は、お使いのパソコンで Docker が利用できる状態であることを前提としてます。 まだ Docker をインストールされてない場合は、下記のリンクから Docker の公式ウェブサイトにアクセスし、使用している OS に合った Docker をインストールしてください。 Get Started with Docker - Docker Docker とは Docker は、ホストマシン上でアプリケーションやサービスを隔離された環境で実行するために使用されるツールです。 Docker を使用することで、ホストマシンの環境に影響を与えることなく、開発環境を構築したり、アプリケーションをデプロイしたりすることができます。
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く