Apache2 redirecting to main site - apache

I'm trying to host multiple websites off a digitalocean droplet using apache2's virtualhosts.
I have a config file for the main one, (pcnerd19.com) and one for the other, (efferri.ga). Whenever I type efferri.ga in firefox though, it just redirects back to pcnerd19.com I've restarted apache2, and made sure both sites are enabled. The is an index file at the root of efferri.ga as well. Here are my config files.
pcnerd19.com:
<IfModule mod_ssl.c>
<VirtualHost *:443>
ServerName pcnerd19.com
ServerAlias www.pcnerd19.com
ServerAdmin ruby#pcnerd19.com
DocumentRoot /var/www/wordpress1
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/pcnerd19.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/pcnerd19.com/privkey.pem
</VirtualHost>
<Directory /var/www/wordpress1>
AllowOverride All
</Directory>
<IfModule>
efferri.ga:
<VirtualHost *:83>
ServerName efferri.ga
ServerAlias www.efferri.ga
ServerAdmin ruby#pcnerd19.com
DocumentRoot /var/www/efferri
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
It is worth mentioning I used certbot to get an ssl certificate on pcnerd19.com, and my droplet is running Debian.

From this page where someone had a similar problem, this answer might help:
When looking at your VirtualHost configuration, you’re setting a ServerAlias that defines the www. access point for each domain, but you’re missing a DNS entry on both domains that points www. to your domain. Since the DNS record isn’t set, Apache will handle it the best way it knows how, which may or may not be correct.
So what I would recommend doing is adding an A entry to each domains’ DNS records. The A entry should point to the same IP that your domain points to (i.e. the public IP of the Droplet).
So www should be an A entry that points to 46.101.19.243 in your case. Since it looks like your using DigitalOcean for your DNS, you can make these changes through their control panel and the updates should take effect pretty quickly. If they don’t, you may need to clear your browsers cache and then try to access your domains again.

Related

Domains crossed over on digital ocean

I have two domains. exampleone.com and exampletwo.com.
I followed this guide for adding multiple domains on the same server:
https://www.digitalocean.com/community/tutorials/how-to-set-up-apache-virtual-hosts-on-ubuntu-16-04
They are both on the same server. Somehow, blog.exampleone.com was created (out of nowhere). and it points to exampletwo.com.
If I click on the site in google, it shows blog.exampleone.com as the domain, but shows the content for exampletwo.com
How is this happening?
I've looked into the vhost files and everything seems correct.
Here is a sample vhost file:
<VirtualHost *:80>
ServerAdmin dave#example.com
DocumentRoot /var/www/html/exampleone.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.lognano
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
This should result in 2 separate sites on the same server. Instead, a blog subdomain was created on one site that points to the content on another site.
What should I do?
Thanks!
You neeed to specify the "ServerName" in your vhost file, something like :
<VirtualHost *:80>
ServerAdmin dave#example.com
ServerName blog.exampleone.com
DocumentRoot /var/www/html/exampleone.com/public_html
ErrorLog ${APACHE_LOG_DIR}/error.lognano
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
in fact, for each vhost file, you need to specify the ServerName to work properly with your subdomains!

Installed SSL on Apache server, page not responding

My question is about SSL installation. I purchased a new SSL for a website that's hosted on a Ubuntu 16.04 box with Apache 2.4.29. I was able to get this installed and I'm not getting any errors but my page is not redirecting. I've followed some guides (DigitalOcean) but feel as I'm missing something.
I have checked the sites-available files (000-default.conf, default-ssl.conf & example.com.conf) and I'm not seeing anything that's catching my eye, but I feel I migtht be missing something. I've checked the status of Apache and I'm not getting any errors and I've restarted the services several times to no avail.
Here's a general breakdown of what I have. Am I missing something? Is additional information required for setting this up?
000-default.conf
<VirtualHost *:80>
ServerAdmin webmaster#localhost
DocumentRoot /var/www
Redirect "/" "https://example.com/"
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
default-ssl.conf
<IfModule mod_ssl.c>
<VirtualHost _default_:443>
ServerAdmin webmaster#localhost
DocumentRoot /var/www
SSLCertificateFile /root/example.com.crt
SSLCertificateKeyFile /root/www.example.com.key
SSLCACertificateFile /root/intermediate.crt
<FilesMatch "\.(cgi|shtml|phtml|php)$">
SSLOptions +StdEnvVars
</FilesMatch>
<Directory /usr/lib/cgi-bin>
SSLOptions +StdEnvVars
</Directory>
</VirtualHost>
</IfModule>4
mydomain.com.conf
<VirtualHost *:443>
ServerAdmin admin#somedomain.com
ServerName mydomain.com
ServerAlias www.example.com
DocumentRoot /var/www/example.com/html
Redirect permanent / https://example.com
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Here is my attempt at a combined configuration. Note that I do not have your setup to test it, but I have used similar configurations on production servers.
First define your port 80 VirtualHost (000-default.conf in your setup):
Listen 80
<VirtualHost *:80>
Redirect "/" "https://example.com/"
LogLevel debug
ErrorLog "${APACHE_LOG_DIR}/80_error.log"
CustomLog "${APACHE_LOG_DIR}/80_access.log" combined
</VirtualHost>
No need for a DocumentRoot since you redirect everything.
Then comment out default-ssl.conf. This file is an example of what you could do to setup an SSL enabled VirtualHost. If you use that file AND another VirtualHost on port 443, this one will always be used, since Apache uses the first VirtualHost it finds that matches the client's request (here port 443).
Another point, VirtualHost are not "added" to one another. Each is independent of the others and must contain a complete configuration. This means you cannot put some configuration in on VirtualHost on port 443, and some in another and expect it to work.
Then create your example.com.conf file:
Listen 443
<VirtualHost *:443>
ServerName example.com
ServerAlias www.example.com
ServerAdmin admin#example.com
SSLCertificateFile "/root/example.com.crt"
SSLCertificateKeyFile "/root/example.com.key"
SSLCACertificateFile "/root/intermediate.crt"
LogLevel debug
ErrorLog "logs/443_error_log"
CustomLog "logs/443_access_log" combined
DocumentRoot "/var/www/example.com/html"
DirectoryIndex index.html
<Directory "/var/www/example.com/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
</VirtualHost>
Some notes:
I put the LogLevel at debug, so you can troubleshoot, but once it is working, change it to error. Otherwise you will have huge log files quickly!
For the same reason, I split the logs for port 80 and port 443. Each VirtualHost should have its own logs.
The certificate files must match the domain name. Not the filename (although it makes it easier to match), but the certificate itself.
If you want your certificate to cover example.com and www.example.com, both names must be added to the alternate names in the certificate.
I do not understand why you have Redirect permanent / https://example.com in your configuration. You are already in the https, port 443 VirtualHost.
The options based on <FilesMatch> directives in the default ssl configuration can be added if you want.
This setup will ensure that all http requests will be redirected to https://example.com. Then it will use the :443 VirtualHost, use the proper certificate for that domain and serve the content from the DocumentRoot directory.

Virtualhost configuration not manage correctly requests

I have the following Virtualhost config in httlp-vhosts.conf:
<VirtualHost *:80>
ServerName rest.budgettracker.loc
DocumentRoot "C:/xampp/htdocs/budget-develop/budget-develop/api/public"
ErrorLog "logs/rest.budgettracker.loc-error.log"
CustomLog "logs/rest.budgettracker.loc-access.log" common
</VirtualHost>
<VirtualHost *:80>
ServerName dev.budgettracker.loc
DocumentRoot "C:/xampp/htdocs/budget-develop/budget-develop"
ErrorLog "logs/budgettracker.loc-error.log"
CustomLog "logs/budgettracker.loc-access.log" common
</VirtualHost>
When I enter dev.budgettrackerpro.com in the browser it goes to the rest.budgettrackerpro.loc virtualhost container.
If I remove the Virtualhost container for the rest request it directs correctly to the correct html/javascript code. Obviously I need the rest call to make it work correctly. I have researched this until I am blue in the face, what am I doing wrong? Please help
You are asking for dev.budgettrackerpro.com. Your configuration is for dev.budgettrackerpro.loc.
What happens is:
Apache sees that your request is on port 80 (http://...)
It checks which VirtualHost are configured to take traffic from port 80.
Here it finds 2. 1) rest.budgettracker.loc 2) dev.budgettracker.loc
Since the domain you asked (the .com) does not match either 1) or 2), Apache assumes that the VirtualHost it should use is the first one it found.
Apache when finding multiple VirtualHost or finding none that match uses the first one in the file (top to bottom).
To solve this:
Request http://dev.budgettracker.loc
Modify your VirtualHost to accept traffic form .com as well, like so:
<VirtualHost *:80>
ServerName dev.budgettracker.loc
ServerAlias dev.budgettracker.com
DocumentRoot "C:/xampp/htdocs/budget-develop/budget-develop"
ErrorLog "logs/budgettracker.loc-error.log"
CustomLog "logs/budgettracker.loc-access.log" common
</VirtualHost>
Notice the new line, ServerAlias dev.budgettracker.com. You can have multiple ServerAlias in a VirtualHost, but only one ServerName.

Unsure of what to add to hosts file - Apache Subdomain

I'm trying to make a subdomain for my xampp/apache hosted website.
However, whenever I attempt to access the subdomain it gives me an "HTTPS insecure error" and redirects me to the main part of the site. Also, I can still access the main site without any issues at all.
In my 'httpd-vhosts.conf' file, I believe all the entries are correct and the issue lies with my hosts file.
To clarify, this is a website with a premium domain name, (i.e not just a website for local use). Most of the tutorials and guides I can find are only really designed for websites that are used locally only.
Here is my 'httpd-vhosts.conf' file (with my domain name edited out of course):
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/"
ServerName domain.xyz
ServerAlias https://domain.xyz
ErrorLog "logs/domain.xyz-error.log"
CustomLog "logs/domain.xyz-access.log" common
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/sub1"
ServerName sub1.domain.xyz
ServerAlias https://sub1.domain.xyz
ErrorLog "logs/sub1.domain.xyz-error.log"
CustomLog "logs/sub1.domain.xyz-access.log" common
</VirtualHost>
The entries I have in my hosts file are (which I'm fairly certain is completely wrong):
127.0.0.1 localhost
127.0.0.1 domain.xyz
127.0.0.1 sub1.domain.xyz

Apache Virtual Domains for staging

We're trying to set up a staging service for domains configured on a server.
At present we have the following in our DNS and it is pointing to our server correctly.
*.server001.stage.ourdomain.com.au
This serves the default site located at:
/Server/http/_default
What I would like it to do is load a site based by the information in place of the wildcard.
Example;
test.com.server001.stage.ourdomain.com.au
would return the contents of:
/Server/http/test.com
Remembering that we might be using .com.au domain names too, so there'd be a requirement for anything before the "server001" part.
You should define another <VirtualHost> block for test.com.server001.stage.ourdomain.com.au with its DocumentRoot pointing to /Server/http/test.com.
Something like this
<VirtualHost *:80>
ServerAdmin webmaster#test.com
DocumentRoot /Server/http/test.com
ServerName test.com.server001.stage.ourdomain.com.au
ErrorLog /var/logs/httpd/test.com/error_log
CustomLog /var/logs/httpd/test.com/access_log common
</VirtualHost>
<VirtualHost *:80>
ServerAdmin webmaster#server001.stage.ourdomain.com.au
DocumentRoot /Server/http/_default
ServerName *.server001.stage.ourdomain.com.au
ErrorLog /var/logs/httpd/server001.stage.ourdomain.com.au/error_log
CustomLog /var/logs/httpd/server001.stage.ourdomain.com.au/access_log common
</VirtualHost>
The wildcard VirtualHost should be the last one since apache picks up the first VirtualHost that matches.
Have a look at the Dynamically Configured Mass Virtual Hosting chapter in the manual. It basically explains how to use the VirtualDocumentRoot directive.