127.0.0.1 localhost
127.0.0.1 test-site
127.0.1.1 my-hostname
# The following lines are desirable for IPv6 capable hosts. etc...
test-site
दूसरा "लोकलहोस्ट" कहाँ है। और my-hostname
में परिभाषित "सिस्टम होस्टनाम" है /etc/hostname
।
2. आपको वर्चुअल होस्ट (VH) को परिभाषित और सक्षम करना चाहिए :
एक डिफ़ॉल्ट HTTP VH है। इसमें रखा गया है /etc/apache2/sites-available/
। फ़ाइल नाम है 000-default.conf
। आपको इसे संपादित करना होगा (आप इसका नाम बदल सकते हैं, यदि आप चाहें, या इसके आधार पर कुछ अन्य .conf फाइलें बना सकते हैं) और इसके बाद आपको इसे सक्षम करना होगा।
आप इसे "सॉफ्ट, प्रतीकात्मक लिंक" के निर्माण के माध्यम से मैन्युअल रूप से सक्षम कर सकते हैं:
sudo ln -s /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-enabled/
या आप a2ensite नामक Apache2 टूल का उपयोग कर सकते हैं , जो समान है:
sudo a2ensite 000-default.conf
मान लें कि 3 वर्चुअल होस्ट्स हैं , SSL सक्षम है, और पंजीकृत निजी डोमेन (SOS.info एक उदाहरण के लिए):
/etc/apache2/sites-available/http.SOS.info.conf
/etc/apache2/sites-available/https.SOS.info.conf
और एक जो इस विषय के प्रयोजनों के लिए बनाया गया है:
/etc/apache2/sites-available/http.test-site.conf
पहले 2 VH की सामग्री है:
$ cat /etc/apache2/sites-available/
http.SOS.info.conf
<VirtualHost *:80>
ServerName SOS.info
ServerAlias www.SOS.info
ServerAdmin admin@SOS.info
# Redirect Requests to SSL
Redirect permanent "/" "https://SOS.info/"
ErrorLog ${APACHE_LOG_DIR}/http.SOS.info.error.log
CustomLog ${APACHE_LOG_DIR}/http.SOS.info.access.log combined
</VirtualHost>
यह एक HTTP के सभी अनुरोधों को HTTPS पर पुनर्निर्देशित करता है।
$ cat /etc/apache2/sites-available/
https.SOS.info.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerName SOS.info
ServerAlias www.SOS.info
ServerAdmin admin@SOS.info
DocumentRoot /var/www/html
SSLEngine on
SSLCertificateFile /etc/ssl/certs/SOS.info.crt
SSLCertificateKeyFile /etc/ssl/private/SOS.info.key
SSLCertificateChainFile /etc/ssl/certs/SOS.info.root-bundle.crt
#etc..
</VirtualHost>
</IfModule>
यह HTTPS VH है।
इन दो फ़ाइलों की सामग्री को एक फ़ाइल में पोस्ट किया जा सकता है, लेकिन इस मामले में उनका प्रबंधन ( a2ensite
/ a2dissite
) अधिक कठिन होगा।
तीसरी वर्चुअल होस्ट वह है, जो हमारे उद्देश्यों के लिए बनाई गई है :
$ cat /etc/apache2/sites-available/
http.test-site.conf
<VirtualHost *:80>
ServerName test-site
ServerAlias test-site.SOS.info
DocumentRoot /var/www/test-site
DirectoryIndex index.html
ErrorLog ${APACHE_LOG_DIR}/test-site.error.log
CustomLog ${APACHE_LOG_DIR}/test-site.access.log combined
<Directory /var/www/test-site>
# Allow .htaccess
AllowOverride All
Allow from All
</Directory>
</VirtualHost>
3. इस विन्यास के साथ आपको पहुंचना चाहिए:
http://localhost # pointed to the directory of the mine Domain
https://localhost # iin our case: /var/www/html (SOS.info), but you should get an error, because the SSL certificate
http://SOS.info # which redirects to https://SOS.info
https://SOS.info # you should have valid SSL certificate
http://www.SOS.info # which is allied to http://SOS.info and redirects to https://SOS.info
https://www.SOS.info # which is allied to https://SOS.info
मुख्य उदाहरण पर आपको पहुंचना चाहिए और :
http://test-site # pointed to the directory /var/www/test-site
http://test-site.SOS.info # which is allied to http://test-site
वेब ब्राउज़र में साइट खोलने का प्रयास करें या अगले कमांड के साथ बस (टर्मिनल में) प्रयास करें:
$ curl -L http://test-site/index.html
$ curl -L http://test-site.SOS.info/index.html
बेशक, आपको index.html
उनके DocumentRoot में कुछ पृष्ठ रखने की आवश्यकता है :)
मैं पैदल सेना के कारण अगले नोट छोड़ दूंगा :)
4. आपको ठीक से कॉन्फ़िगर करने की आवश्यकता है `/ etc / apache2 / apache2.conf`।
Ii आपके सर्वर की सुरक्षा को बेहतर बनाने के लिए कुछ समय बिताने के लिए अच्छा विचार है। ये मैनुअल सुरक्षा कॉन्फ़िगरेशन के बारे में हैं: 1 और 2 । यहां आप मुफ्त एसएसएल प्रमाणपत्र प्राप्त कर सकते हैं। ये साइटें आपकी प्रगति की जांच करने में आपकी मदद करेंगी: 1 और 2 ।
उपरोक्त सुरक्षा नियमावली के अनुसार /etc/apache2/apache2.conf
फाइल को इस तरह दिखना चाहिए:
Mutex file:${APACHE_LOCK_DIR} default
PidFile ${APACHE_PID_FILE}
Timeout 60
#KeepAlive Off
KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5
HostnameLookups Off
ErrorLog ${APACHE_LOG_DIR}/error.log
LogLevel warn
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
Include ports.conf
<Directory />
Options None FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /var/www/>
Options None FollowSymLinks
AllowOverride None
Require all granted
</Directory>
AccessFileName .htaccess
<FilesMatch "^\.ht">
Require all denied
</FilesMatch>
LogFormat "%v:%p %h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" vhost_combined
LogFormat "%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %O" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
IncludeOptional conf-enabled/*.conf
IncludeOptional sites-enabled/*.conf
# Hide Server type in the http error-pages
ServerSignature Off
ServerTokens Prod
# Etag allows remote attackers to obtain sensitive information
FileETag None
# Disable Trace HTTP Request
TraceEnable off
# Set cookie with HttpOnly and Secure flag.
# a2enmod headers
Header edit Set-Cookie ^(.*)$ $1;HttpOnly;Secure
# Clickjacking Attack
Header always append X-Frame-Options SAMEORIGIN
# CX-XSS Protection
Header set X-XSS-Protection "1; mode=block"
# Disable HTTP 1.0 Protocol
RewriteEngine On
RewriteCond %{THE_REQUEST} !HTTP/1.1$
RewriteRule .* - [F]
# Change the server banner @ ModSecurity
# Send full server signature so ModSecurity can alter it
ServerTokens Full
# Alter the web server signature sent by Apache
<IfModule security2_module>
SecServerSignature "Apache 1.3.26"
</IfModule>
Header set Server "Apache 1.3.26"
Header unset X-Powered-By
# Hde TCP Timestamp
# gksu gedit /etc/sysctl.conf
# >> net.ipv4.tcp_timestamps = 0
# Test: sudo hping3 SOS.info -p 443 -S --tcp-timestamp -c 1
# Disable -SSLv2 -SSLv3 and weak Ciphers
SSLProtocol all -SSLv2 -SSLv3
SSLHonorCipherOrder on
SSLCipherSuite "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA EECDH EDH+aRSA !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS !RC4"
5. फ़ायरवॉल सेट करें।
अपने वेब सर्वर पर बाहरी पहुंच की अनुमति देने / अस्वीकार करने के लिए आप UFW (अनकम्प्लिकेटेड फ़ायरवॉल) का उपयोग कर सकते हैं :
sudo ufw allow http
sudo ufw allow https
केवल tcp
प्रोटोकॉल उपयोग की अनुमति देने के लिए:
sudo ufw allow http/tcp
sudo ufw allow https/tcp
आप सीधे पोर्ट नंबर का उपयोग कर सकते हैं:
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
बस मामले में आप "नियम तालिका" को पुनः लोड कर सकते हैं:
sudo ufw reload
आप यूएफडब्ल्यू के जीयूआई इंटरफेस का उपयोग कर सकते हैं, जिसे gufw कहा जाता है ।
sudo apt update
sudo apt install gufw
gufw &
Office
प्रोफ़ाइल का चयन करें । यह सेट हो जाएगा: Status:ON
, Incoming:Deny
और Outgoing:Allow
और अपने नियमों को जोड़ें।
6. यदि आपके पास एक राउटर है तो कुछ बंदरगाहों को अग्रेषित करना न भूलें:
यदि आपके पास एक राउटर है और आप चाहते हैं कि आपका वेब सर्वर इंटरनेट से सुलभ हो , तो कुछ पोर्ट फॉरवर्ड करना न भूलें। कुछ इस तरह ।
ServerName 192.168.0.2
लाइन फेंकूंगा क्योंकि ServerName निर्देश में www.server.com जैसा नाम होना चाहिए, न कि आईपी नंबर। मुझे लगता है कि इससे समस्या हल हो सकती है। ServerName के लिए आपको सर्वर का नाम दर्ज करना चाहिए यदि आपके पास यह है। ServerName नाम आधारित वर्चुअल होस्टिंग की अनुमति देता है, जो एक ही आईपी पर अधिक वेब साइट रखने की अनुमति देता है।