特にフォルダを作成せずにドメインを動的にホストする方法は?

特にフォルダを作成せずにドメインを動的にホストする方法は?

ドメイン名が私のサーバーのIPアドレスを指しているとしましょう。

ドメイン名が来るとすぐに...

Apacheを実行したいです。

 python_script domain.tld

おそらく..

 bash_script domain.tld

受信ドメインが次の場合:

domain.tld/test

それから..

 bash_script domain.tld/test

実行しなければならない。

Bashスクリプトで計算を実行し、表示する内容を決定できます。

セキュリティの問題のため、このようには機能しないかもしれませんが、セキュリティは私の関心ではありません。ただテストしてみたかったです。

ベストアンサー1

apache仮想ホストが定義されていない場合、デフォルトのインストールはそれを指すすべてのURLを提供します。したがって、apache応答を得るために追加の作業を実行する必要はありません。

スクリプトを挿入し/var/www/cgi-binて通過することを確認してくださいchmod 0755 <script name>

/var/www/cgi-bin/test.shたとえば、次を生成する場合:

#!/bin/bash
echo "Content-type: text/html"
echo ""
echo "<pre>"
env
echo "</pre>

次に、ブラウザ:に移動すると、次のhttp://<server name or IP>/cgi-bin/test.shような内容が表示されます。

SERVER_SIGNATURE=
Apache/2.2.15 (CentOS) Server at testing.lo Port 80

HTTP_USER_AGENT=Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Firefox/31.0
SERVER_PORT=80
HTTP_HOST=testing.lo
DOCUMENT_ROOT=/var/www/html
SCRIPT_FILENAME=/var/www/cgi-bin/test.sh
REQUEST_URI=/cgi-bin/test.sh
SCRIPT_NAME=/cgi-bin/test.sh
HTTP_CONNECTION=keep-alive
REMOTE_PORT=43964
PATH=/sbin:/usr/sbin:/bin:/usr/bin
PWD=/var/www/cgi-bin
SERVER_ADMIN=root@localhost
HTTP_ACCEPT_LANGUAGE=en-gb,en;q=0.5
HTTP_ACCEPT=text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
REMOTE_ADDR=192.168.122.1
SHLVL=1
SERVER_NAME=testing.lo
SERVER_SOFTWARE=Apache/2.2.15 (CentOS)
QUERY_STRING=
SERVER_ADDR=192.168.122.40
GATEWAY_INTERFACE=CGI/1.1
SERVER_PROTOCOL=HTTP/1.1
HTTP_CACHE_CONTROL=max-age=0
HTTP_ACCEPT_ENCODING=gzip, deflate
REQUEST_METHOD=GET
_=/bin/env

ご覧のとおり、HTTP_HOSTこれはサーバーのURL(testing.loこの場合)であり、スクリプトで使用できます。

ただし、これは/cgi-bin/test.shURLで要求されたものとまったく一致しません。この問題を解決するには、リダイレクトする必要があります。最も簡単な方法は、ファイルを有効にして.htaccess設定することです。

/etc/httpd/conf/httpd.conf行を見つけて<Directory "/var/www/html">から始まる行が表示されるまで、数行下にスクロールしますAllowOverride。に設定されていることを確認してくださいAll。以下が必要です。

<Directory "/var/www/html">
...
...
AllowOverride All
...
...
</Directory>

ここでファイルを作成し、/var/www/html/.htaccess次の内容を追加します。

RewriteEngine on
RewriteRule (.*) /cgi-bin/test.sh/$1 [L]

再起動apache:

service httpd restart

ブラウザでサーバーのURLを指しますhttp://<server name or IP>

以前と同様の結果が表示されますが、URLにスクリプトパスを追加しないでください。また、スクリプトで使用するために入力したURLを知らせる環境変数もあります。

HTTP_HOSTサーバーの名前です。

PATH_INFOサーバーに追加されたパス。 (ブラウザに入力する場合testhttp://<server name or IP>/test

あなたのスクリプトでは、bashあなたの質問が示すように、スクリプトの引数を解析する代わりにこれらの変数を使用する必要があります。

しかし、bashスクリプトの場合、必ずしもそうではありません。渡された環境変数にアクセスできる限り、目的の言語を使用してください。

おすすめ記事