さくらVPS(CentOS)でnginxフロントに置いてSSLリバースプロキシでapache表示とWordPressのリダイレクト等
概要
google検索等で常時SSL化した方がいい流れっぽいので
少し遅ればせながら本サイトで対応してみた際詰まった箇所等があったのでのメモです。
さくらVPS(CentOS)で
Nginxからのリバースプロキシでapache(wordpress)表示するといった流れですが
サーバー周りとリクエストヘッダとか知識乏しいので、とりあえずこれで動きましたよっていう設定です。
SSLの証明書周りは下記とか参考にしました。
https://qiita.com/yoshizaki_kkgk/items/e6f39a5bfb99900b44b2
SSL JPRSってのが追加された?のか一番安いので入れてみました。
入れてから気づいたけどサブドメインはまた別で用意するかワイルドカードSSL証明が必要っぽい
しかも高い。追って考えます。
設定周り
nginxの設定
//nginx default.conf
server{
listen 80;
server_name domain.com;
return 301 https://$host$request_uri;
// httpリクエストはhttpsにリダイレクト
}
server{
listen 443;
server_name domain.com;
ssl on;
ssl_certificate /path/to/server.crt; //ここのパスを変更
ssl_certificate_key /path/to/server.key; //ここのパスを変更
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Server $http_host;
location / {
proxy_pass http://127.0.0.1:8888;
// apacheにリバースプロクシ
}
}
多分Nginx->apacheのproxy_pass
はhttpでよいみたい?です。
apacheの設定
//apache virtual.confとか
<VirtualHost *:8888>
ServerName domain.com
DocumentRoot /var/www/html/domain.com/
</VirtualHost>
wordpressの設定
後wp_optionのsiteurl/homeをhttpsに変更ました。
がwordpress側でリダイレクトがうまく行ってないみたいで結構色々な記事見て苦戦したのですが
僕の場合WP側にも下記追記で一応うまく動きました。
//wp-config.php
define('WP_DEBUG', false);
define('FORCE_SSL_ADMIN', true);
if ( ! empty( $_SERVER['HTTP_X_FORWARDED_PROTO'] ) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https' ) {
$_SERVER['HTTPS']='on';
}
# 管理画面でのhttpsを強制する設定みたなのっぽい
# HTTP_X_FORWARDED_PROTOってのがnginxで設定したproxy_set_header X-Forwarded-Proto https;ヘッダが関係してるっぽい。かな?
あとhome画面/index.phpでもリダイレクトループみたいな感じになって表示できなかったので
最新バージョンでは書かなくても大丈夫になったとかなんやかんや情報あったんですが
下記追記というかtemplate_redirectのアクションコメントで一応期待どおりの動きになりました。
//wp-includes/template-loader.php
- do_action( 'template_redirect' );
+ // do_action( 'template_redirect' );
ただの羅列&原因とか対処適当でとりあえず動いたよってだけですが
客仕事用のサイトでもないのでとりあえず良しとします。
誰かお困りの方の参考になれば幸いです。
以上です。
追記 let’s encrypt
let’s encrypt
let’s encryptってのが無料で証明書とか発行できるみたいなので
無料でいいよって方はlet’s encryptがおすすめかもです。
切り替え試してみたらば特に問題なさそうなので
僕も無料で(が)いいのですが、もうSSL JPRS契約しちゃったので勿体ないので期限までは致し方なく利用しますが
下記参考にさせていただきました。
https://y-hilite.com/3186/git clone http request failed
git cloneでhttp request failedってのがでたので
yum update -y nss curl libcurl
yum updateで適当に(Y)yesでアップデートしてたら
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:443 nginx
apacheまでアップデートしてしまってたらしくrestart出来ずに焦りましたが
nginxとapacheで重複っぽい気がするので
apache側のlisten
/etc/httpd/conf.d/ssl.confのコメントで解消できました。
/etc/httpd/conf.d/ssl.conf
#Listen 443
ディスカッション
コメント一覧
まだ、コメントがありません