2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

VirtualBoxでCentOS上のApacheでリバースプロキシしてHTMLを書き換えてHello WorldをCrazy Worldにする

Posted at

#はじめに
VirtualBoxでUbunts上のnginxでリバースプロキシしてHTMLを書き換えてHello WorldをCrazy WorldにするのApacheバージョンです。
VirtualBox初心者なのでそっちの手順もメモです。
「ApacheでリバースプロキシしてHTMLを書き換え」はここからです。

Virtualboxで新規作成

2019-09-12 (2).png

適当に名前をつける

2019-09-12 (3).png

あとはデフォルトのまま次へを連打

ネットワークアダプター1でポートフォワーディング

2019-09-12 (5).png
2019-09-12 (6).png

ネットワークアダプター2を有効にしてHost-Onlyを選ぶ

2019-09-12 (4).png

ストレージにCentoosを選択

CentOSダウンロード元
2019-09-12 (7).png
2019-09-12 (9).png

起動してInstallする

2019-09-12 (10).png

日本語を選択(左下の検索ボックスに「J」を入力ですぐ出る)

2019-09-12 (13).png
2019-09-12 (18).png

インストール先を選択

2019-09-12 (15).png

ネットワークON(emp0s3とemp0s8両方)

2019-09-12 (19).png

ユーザーとパスワードを作成

2019-09-12 (17).png
2019-09-12 (16).png

インストールが終わったら再起動

2019-09-12 (21).png

emp0s8のIPにrloginで接続

2019-09-12 (22).png
2019-09-12 (23).png

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は自分の環境に合わせて変更してください

2019-09-12 (24).png

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

アクセスしてみる

2019-09-13 (2).png

ホスト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/

Dockerでやりたい

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?