Help us understand the problem. What is going on with this article?

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

はじめに

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でやりたい

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away