環境
- centos7
- nginx1.23.3
- openssl1.1.1
https通信をnginxでフォワードプロキシする、proxyサーバを構築する。
ただし、検証の段階で記事を書いているため動作はdocker上で行っている。
ユニットファイル作成後に
sudo systemctl status nginx
を実行したらdockerの--privilegedオプションを付けてなかったので怒られた。
参考
準備
下記をインストール
- patch
- gcc
- pcre-devel
- perl
- zlib-devel
yum install patch gcc pcre-devel perl zlib-devel
下記をダウンロード及びgit clone
- openssl1.1.1
openssl1.1.1
https://www.openssl.org/source/openssl-1.1.1t.tar.gz
インストール作業
# 実行ユーザ追加 sudo useradd -M -s /sbin/nologin nginx # opensslダウンロード curl https://www.openssl.org/source/openssl-1.1.1t.tar.gz tar fxz openssl-1.1.1t.tar.gz # ngx_http_proxy_connect_moduleダウンロード wget https://github.com/chobits/ngx_http_proxy_connect_module.git (これでできるか検証。できなければzipなどでもってくる) # nginx http proxy connect moduleの適用 patch -p1 < ../ngx_http_proxy_connect_module/patch/proxy_connect_rewrite_102101.patch # nginxビルド cd nginx1.23.3 ./configure --prefix=/etc/nginx \ --sbin-path=/usr/sbin/nginx \ --modules-path=/usr/lib64/nginx/modules \ --conf-path=/etc/nginx/nginx.conf \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --pid-path=/var/run/nginx.pid \ --lock-path=/var/run/nginx.lock \ --http-client-body-temp-path=/var/cache/nginx/client_temp \ --http-proxy-temp-path=/var/cache/nginx/proxy_temp \ --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \ --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \ --http-scgi-temp-path=/var/cache/nginx/scgi_temp \ --user=nginx \ --group=nginx \ --add-module=../ngx_http_proxy_connect_module \ --with-threads \ --with-http_ssl_module \ --with-http_v2_module \ --with-http_realip_module \ --with-compat \ --with-file-aio \ --with-http_addition_module \ --with-http_auth_request_module \ --with-http_dav_module \ --with-http_flv_module \ --with-http_gunzip_module \ --with-http_gzip_static_module \ --with-http_mp4_module \ --with-http_random_index_module \ --with-http_secure_link_module \ --with-http_slice_module \ --with-http_stub_status_module \ --with-http_sub_module \ --with-openssl=../openssl-1.1.1t \ --with-mail \ --with-mail_ssl_module \ --with-stream \ --with-stream_realip_module \ --with-stream_ssl_module \ --with-stream_ssl_preread_module \ --with-cc-opt='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic -fPIC' --with-ld-opt='-Wl,-z,relro -Wl,-z,now -pie' make make install # nginx info /sbin/nginx -V # ユニットファイル作成 vi /lib/systemd/system/nginx.service [Unit] Description=nginx - high performance web server Documentation=http://nginx.org/en/docs/ After=network-online.target remote-fs.target nss-lookup.target Wants=network-online.target [Service] Type=forking PIDFile=/var/run/nginx.pid ExecStart=/sbin/nginx -c /etc/nginx/nginx.conf ExecReload=/bin/kill -s HUP $MAINPID ExecStop=/bin/kill -s TERM $MAINPID PrivateTmp=true [Install] WantedBy=multi-user.target
ポート開放
# http向けポートを開放 firewall-cmd --zone=public --add-service=http # https向けポートを開放 firewall-cmd --zone=public --add-service=https # ポートの恒久設定 firewall-cmd --zone=public --add-service=http --permanent firewall-cmd --zone=public --add-service=https --permanent # 設定読み込み firewall-cmd --reload # 設定の確認 firewall-cmd --list-all
ポート開放について参考になる
証明書設置
用意するもの
- サーバ証明書
- 鍵
- 中間証明書
サーバ証明書、鍵は発行者がいるならそいつからもらう
中間証明書は中間認証局からダウンロードする
ここで
- 鍵 key.key
- サーバ証明書 server.crt
- 中間証明書 ca.pem
とする
サーバ証明書と中間証明書の結合を行う。
# nginxがあるサーバでの作業 # ファイルの結合 cat server.crt ca.pe > cert.pem mv cert.pem /etc/pki/tls/ mv key.key /etc/pki/tls/
証明書設置について参考になる
nginxの設定ファイルを編集
ざっと設定する
vi /etc/nginx/nginx.conf
でnginxの設定ファイルを開き、以下のように入力する。
設定内容
後で記入