#はじめに
VirtualBoxでUbunts上のnginxでリバースプロキシしてHTMLを書き換えてHello WorldをCrazy WorldにするのApacheバージョンです。
VirtualBox初心者なのでそっちの手順もメモです。
「ApacheでリバースプロキシしてHTMLを書き換え」はここからです。
Virtualboxで新規作成
適当に名前をつける
あとはデフォルトのまま次へを連打
ネットワークアダプター1でポートフォワーディング
ネットワークアダプター2を有効にしてHost-Onlyを選ぶ
ストレージにCentoosを選択
起動してInstallする
日本語を選択(左下の検索ボックスに「J」を入力ですぐ出る)
インストール先を選択
ネットワークON(emp0s3とemp0s8両方)
ユーザーとパスワードを作成
インストールが終わったら再起動
emp0s8のIPにrloginで接続
enp0s8が有効になっていない場合
nmcli connection modify enp0s8 autoconnect yes
yumプロキシ設定(もしプロキシがあれば)
[root@localhost ~]# vi /etc/yum.conf
/etc/yum.conf
proxy=http:/hoge.co.jp:18080
#http:/hoge.co.jp:18080は自分の環境に合わせて変更してください
httpdをインストールして起動
[root@localhost ~]# yum install httpd
[root@localhost ~]# systemctl start httpd.service
firewalの80番ポートをオープン
[root@localhost ~]# firewall-cmd --add-service=http --permanent
[root@localhost ~]# firewall-cmd --reload
/usr/sbin/setsebool httpd_can_network_connect true
アクセスしてみる
ホストOSのフォルダを共有
VirtualBoxで共有フォルダを作ってゲストOSとファイル共有する
マウントしたディレクトリの権限グループ(vboxsf)にapacheの実行ユーザー(apache)を追加
[root@localhost ~]# gpasswd -a apache vboxsf
[root@localhost ~]# systemctl restart httpd.service
ApacheのDocumentRootにさっきマウントしたディレクトリを設定
[root@localhost ~]# vi /etc/httpd/conf/httpd.conf
/etc/httpd/conf/httpd.conf
# DocumentRoot "/var/www/html"
DocumentRoot "/media/sf_extendedui/"
・・・
# <Directory "/var/www/html">
<Directory "/media/sf_extendedui/">
Options Indexes FollowSymLinks
・・・
</Directory>
[root@localhost ~]# systemctl restart httpd.service
SELinuxが有効な場合は無効にする
[root@localhost ~]# vi /etc/selinux/config
SELINUX=disabled ← enforcing から disabled に変更
[root@localhost ~]# shutdown -r now
Apacheのモジュール設定(置換機能有効化)
[root@localhost ~]# vi /etc/httpd/conf.modules.d/00-base.conf
/etc/httpd/conf.modules.d/00-base.conf
#LoadModule request_module modules/mod_request.so
LoadModule sed_module modules/mod_sed.so
#LoadModule speling_module modules/mod_speling.so
リバースプロキシとHTML書き換え設定
http://localhost:8080/hello/にアクセスされたらhttp://localhost:3000/world/のHTMLを表示する
OutputSed "s/[置き換え元の文字列]/[置き換えたい文字列]/g"
[root@localhost ~]# vi /etc/httpd/conf.d/rproxy.conf
/etc/httpd/conf.d/rproxy.conf
<IfModule mod_proxy.c>
ProxyRequests Off
<Proxy *>
Require all granted
</Proxy>
<VirtualHost _default_:80>
ServerName localhost:8080
ProxyPass /hello http://localhost:3000/world/
ProxyPassReverse /hello http://localhost:3000/world/
<LocationMatch /.*(/.+)*>
AddOutputFilterByType Sed text/html php asp jsp
OutputSed "s/Hello/Crazy/g"
</LocationMatch>
</VirtualHost>
</IfModule>
nodejsをインストール
[root@localhost ~]# yum install epel-release
[root@localhost ~]# yum install nodejs npm
firewalの3000番ポートをオープン
[root@localhost ~]# firewall-cmd --zone=public --add-port=3000/tcp --permanent
[root@localhost ~]# firewall-cmd --reload
nodeで立ち上げるHTMLを準備
hello.html
<!DOCTYPE html>
<html>
<head>
<title>Hello World</title>
</head>
<body>
<h1>Hello World</h1>
</body>
</html>
hello.js
const http = require('http');
const fs = require('fs');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
// res.setHeader('Content-Type', 'text/plain');
// res.end('Hello World!\n');
fs.readFile('hello.html','UTF-8',
(error, data)=>{
res.writeHead(200,{'Content-Type':'text/html'});
res.write(data);
res.end();
});
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
nodeで立ち上げてhttp://localhost:8080/helloにアクセス
[root@localhost ~]# node hello.js
Server running at http://127.0.0.1:3000/