私は以前この質問を投稿しましたが、私がそれを書いた方法や何かが明確ではなかったと思います。だから私はそれを削除しました、そしてここに私が考えることができる限り多くの情報が含まれています。
私は、Dellディメンション2400の古いコンピューター部分を使用してサーバーを作成しました。Ubuntu16.04.6 LTSとLinux 4.15.0-72-genericカーネルをインストールしました。 mysql-server、Apache2、certbot、pyton3、python-Apache-certbot、php7.0、ssh、vsftpdをインストールし、インストールに必要なポートを内部IPに転送しました。 (192.168.1.23)。
次に、サーバーにwordpress=サイトをセットアップします。問題は、仮想ホストファイル(以下を参照)をセットアップしたことですが、サイトが機能するには、ネットワーク内部IPを使用する必要があります。ロードするサイト。
仮想ホストファイルは次のとおりです。
<IfModule mod_ssl.c>
<VirtualHost 192.168.1.23:443>
# The ServerName directive sets the request scheme, hostname and port that
# the server uses to identify itself. This is used when creating
# redirection URLs. In the context of virtual hosts, the ServerName
# specifies what hostname must appear in the request's Host: header to
# match this virtual Host. For the default virtual Host (this file) this
# value is not decisive as it is used as a last resort Host regardless.
# However, you must set it for any further virtual Host explicitly.
#ServerName www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/domain.com/public_html
# Available loglevels: trace8, ..., trace1, debug, info, notice, warn,
# error, crit, alert, emerg.
# It is also possible to configure the loglevel for particular
# modules, e.g.
#LogLevel info ssl:warn
ErrorLog ${Apache_LOG_DIR}/error.log
CustomLog ${Apache_LOG_DIR}/access.log combined
# For most configuration files from conf-available/, which are
# enabled or disabled at a global level, it is possible to
# include a line for only one particular virtual Host. For example the
# following line enables the CGI configuration for this Host only
# after it has been globally disabled with "a2disconf".
#Include conf-available/serve-cgi-bin.conf
ServerName domain.com
SSLCertificateFile /etc/letsencrypt/live/domain.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/domain.com/privkey.pem
Include /etc/letsencrypt/options-ssl-Apache.conf
</VirtualHost>
</IfModule>
~
これが動作中の仮想ホストであることを覚えておいてください。
これをドメイン名(domain.com:443)に変更すると、機能しないはずです。
(ポート80で同じ問題。)
内部DNSが必要ですか、それとも別のものですか?
Bindをインストールしようとしましたが、ひどくおかしくなったか、そうではありませんでした。
とにかく私はこれが十分な情報であり、誰かがこれにいくつかの光を当てることができることを願っています。このサーバーで別のサイトをホストできるようにしたいと思います。
ServerName
ディレクティブは、仮想ホストが受け入れるデフォルトのドメイン名を定義するために使用されます(デフォルトのドメイン名の同義語はServerAlias
)。また、<VirtualHost>
タグ。特別な目的はありませんが、異なるサーバーのIPアドレスからアクセスされる同じドメイン名に対して異なるコンテンツを提供するなどです。
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName example.com
ServerAlias www.example.com www2.example.com
# Other configuration directives...
</VirtualHost>
</IfModule>
サーバーのパブリックIPアドレスを指すFQDNがない場合を除き、ローカルのDNSをセットアップするか、ドメインから(ウェブ)サーバーにアクセスするためにLANデバイスのhosts
ファイルを編集する必要がありますLAN内の名前。詳細については、次の参考資料をお読みください。
ServerName
ディレクティブは、Apacheが実行しているドメインを知るためにのみ使用されます(場合によっては、ドメインに応じて複数のVirtualHostを区別するために使用されます)。ドメインを解決しようとするクライアントには影響しません。
どのような変更を加える必要があるかは、設定がどのようになっているかに完全に依存します。
ドメインを使用する場合でも、クライアントコンピュータに、それが指すPCを通知する必要があります。これは、システムのhosts
-ファイル(特にテストの場合はセットアップが簡単ですが、すべてのコンピューターをセットアップするのは面倒です)または独自のDNSサーバー(セットアップと正しい方法ですが、最終的にはより柔軟になります)。 (これは、自分で発明したものではなく、「公式」ドメインを使用している場合は適用されません。ローカルネットワーク内でdomain.comを内部IPに解決する場合を除きます。)
ドメイン自体が正しく設定されているかどうかを確認するには、パブリックIP(またはifconfig -a
(設定によって異なります) ifconfig.co のようなページを介してサーバー上で、それをDig domain.com
またはnslookup domain.com
。同じものが返される場合、ドメインはパブリックIPを指すように正しく設定されています。そうでない場合は、ドメインが指す場所を変更する必要がありますが、私はそれを手伝うことはできません。
公共のインターネットからページにアクセスする場合は、NATについて心配する必要があります。 NAT(または「ネットワークアドレス変換」)は、単一のパブリックIPを介して複数の内部デバイスの通信を処理します(類似のものがセットアップされている可能性があります)。現在、ルーターにはアイデアがありませんそれが問題の考えられる原因の1つである可能性がある、ポート80/443で着信パケットを送信するコンピューター。正しくセットアップするには、特定のルーターで「ポート転送」をセットアップする方法を検索し、すべての着信TCPパケットをポート80および443でローカルネットワークのサーバー上の同じポートに送信します。
また、具体的にはローカルIPを配置するVirtualHostディレクティブに注意を払う必要がある場合もあります(現在の設定で問題になるとは想像できませんが、他の原因が考えられます)。これは基本的に、その特定のIPで着信接続のみをリッスンするようにApacheに指示します。 NATを設定すると、リクエストがローカルネットワークのインターフェースに送信されるため、これで問題ありません。他の手順を実行しても問題が解決しない場合は、そのIPアドレスをアスタリスクに置き換えて、Apacheがすべてのインターフェースをリッスンするようにしてください。これにより、考えられるエラーの別の原因(非常に小さい場合)が削除されます。