Creating multiple websites on your NAS.
There are already running several apache servers on your NAS. These have different special purposes. To have your NAS serve multiple domains, there is no need to add additional apache servers, you can serve them all from one Apache server.
All the magic lies inside apache, by using VirtualHosts.
First of, you need to create a folderstructure on the NAS, that the apache can utilize.
We already have Qweb, so let's just extend the use of it, by moving all our websites to subfolders.
Qweb:
index.html
HTML files
Folders for the site
Changes to:
Qweb:
site1
HTML files
Folders for the site
site2
HTML files
Folders for the site.
Site3
....
To minimize the damage if the apache.conf file is reset by a firmware you should create your own config file. As we no longer want to use the root of Qweb to hold webserver pages, we can place the additional configuration there.
Qweb:\customization.conf
And then in the config file of the apache server ( /etc/config/apache/apache.conf), we can add
include /share/Qweb/customization.conf
at the bottom of apache.conf
An example of a config file could look like this:
ServerAdmin webmaster@site1.com
ServerName http://www.site1.com
DocumentRoot "/share/Qweb/site1”
<Directory />
Order Deny,Allow
Deny from all
</Directory>
<Directory "/share/Qweb/site1">
Options FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
Allow from all
</Directory>
ServerSignature Off
ServerTokens Prod
NameVirtualHost *:80
<VirtualHost *:80>
ServerName http://www.site1.com
ServerAlias site1.com http://www.site1.org site1.org
DocumentRoot "/share/Qweb/site1"
<Directory "/share/Qweb/site1">
Options FollowSymLinks MultiViews
AllowOverride All
Order allow,deny
Allow from all
</Directory>
ErrorLog /share/Qweb/logs/site1_error
CustomLog /share/Qweb/logs/site1_access combined
</VirtualHost>
First of we define where to send mail for users that experience errors, we also set a deny for root, which is lacking in the standard config.
Furthermore we limit the info we want to give away, and then we tell apache, that we want to create virtualhosts based on their name on port 80, which is the standard webport.
Finally we define a virtual server based on it's name.
There is the servername, which is what apache is to react on, and then there are aliases created for other sites, or TopLevelDomains, that you want to direct to the same site.
Finally there is a seperate logfile for each website, if you don't want to look at the logfiles, the errorlog and customlog lines can be omitted. Then the apache will use it's standard log file for every transaction.
To create another site, we simply add a new <VirtualHost> ... </VirtualHost> set, that points to another directory.
This way you can have some domains point to the same site, and others to seperate sites.
If you wish to harden the apache a bit more, you should find the Rewrite module, which can be found on the qnap forums, and then add the following lines to the customization config. The apache replies to some very unusual request methods, and there is no need for that, so we just want to redirect them to nothing.
LoadModule rewrite_module libexec/mod_rewrite.so
RewriteEngine On
RewriteCond %{REQUEST_METHOD} ^TRACE [OR]
RewriteCond %{REQUEST_METHOD} ^PROPFIND [OR]
RewriteCond %{REQUEST_METHOD} ^PROPPATCH [OR]
RewriteCond %{REQUEST_METHOD} ^MKCOL [OR]
RewriteCond %{REQUEST_METHOD} ^COPY [OR]
RewriteCond %{REQUEST_METHOD} ^MOVE [OR]
RewriteCond %{REQUEST_METHOD} ^LOCK [OR]
RewriteCond %{REQUEST_METHOD} ^UNLOCK [OR]
RewriteCond %{REQUEST_METHOD} ^LINK [OR]
RewriteCond %{REQUEST_METHOD} ^UNLINK
RewriteRule .* - [F]
ma ktos ochote tlumaczyc?