Map phpMyAdmin to a port on CentOS and Apache - apache

I was wondering how I would go about setting up the virtual hosts so that I just have to enter www.mydomain.com:9090 to go to phpmyadmin. This is how I have my vhosts set up right now in httpd.conf:
<VirtualHost *:80>
DocumentRoot /var/www/html/
ServerName mydomain.com
ServerAlias www.mydomain.com
</VirtualHost>
<VirtualHost *:9090>
DocumentRoot /usr/share/phpMyAdmin/
ServerName mydomain.com
ServerAlias www.mydomain.com
</VirtualHost>
This does not seem to be working.

Have you tried adding... Listen 9090 to your config?

Add the new Virtual host in /etc/httpd/conf.d/localhost.conf and then edit httpd.conf in /etc/httpd/ to listen to new port. Restart httpd and then opened the port in IPtables. Apply the new rules.

Related

Multiple Virtual host with Port 443 pointing to wrong directory

I have created two virtual host files on ubuntu apache2
www.example1.com.conf
www.example2.com.conf
which is working fine with port 80. without https.
I have added following code for 443
VirtualHost *:443>
ServerAdmin info#example1
ServerName example1.com
DocumentRoot /var/www/www.example1.com/
#SSLEngine on
#SSLCertificateFile /etc/ssl/example1.crt
#SSLCertificateKeyFile /etc/ssl/example1.key
#SSLCertificateChainFile /etc/ssl/SectigoRSADomainValidationSecureServerCA.crt
</VirtualHost>
and
<VirtualHost *:443>
ServerAdmin info#example2
ServerName example2.com
DocumentRoot /var/www/www.example2.com/
</VirtualHost>
Now, when i am opening https://www.example2.com/, i am seeing content of example1.com.
but if i do http://www.example2.com/ then content is ok.
Can you please suggest what will be the issue ?

Apache port and url

I want to have several sites on my local machine, associated to specific port in my apache configuration. I don't even know if what I want is possible to do, or if I have the good way of thinking. May be I need other tools, so please, can you explain me ?
I have my dev machine with several site working on it, in my hosts file I put:
127.0.0.1 local.site1.com
127.0.0.1 local.site2.com
In appache configuration, I have these virtual hosts:
Listen 8081
Listen 8082
<VirtualHost *:8081>
ServerName local.site1.com
ServerAlias local.site1.com
DocumentRoot "C:/site1"
</VirtualHost>
<VirtualHost *:8082>
ServerName local.site2.com
ServerAlias local.site2.com
DocumentRoot "C:/site2"
</VirtualHost>
Do you know what should I do to have ?
http://local.site1.com that goes automatically and only to port 8081
http://local.site2.com that goes automatically and only to port 8082
Now, my configuration looks useless, because http://local.site1.com opens port 80, and http://local.site2.com:8081 goes to site1.
Why do you want them running on different ports? You don't need to do that to get what you want.
You can use NameVirtualHosts and run both sites on the same port, and the server will serve the correct site based on the domain name used in your browser.
http://httpd.apache.org/docs/2.2/vhosts/name-based.html
Example
NameVirtualHost *:80
<VirtualHost *:80>
ServerName local.site1.com
ServerAlias local.site1.com
DocumentRoot "C:/site1"
</VirtualHost>
<VirtualHost *:80>
ServerName local.site2.com
ServerAlias local.site2.com
DocumentRoot "C:/site2"
</VirtualHost>

Apache 404 with specific port

I have a LAMP server and I have to use a port other than 80.
I set "Listen 3689" and I didn't remove "Listen 80".
When I use the port 80 everything works fine but when I try the other one I got 404.
Any ideas?
you should add a virtual host with the port you want
usually there is
<VirtualHost *:80>
DocumentRoot /www/example1
ServerName www.example.com
# Other directives here
</VirtualHost>
Now you need to add
<VirtualHost *:3689>
DocumentRoot /www/example1
ServerName www.example.com
# Other directives here
</VirtualHost>

Apache don't restart with new Vhost *:443

I'm trying to add a virtual host on my EC2 centos instance.
I added mod24_ssl, and my certificates.
But when I try to add a new virtual host apache don't want to restart.
I just copy paste a working vhost and change port :
<VirtualHost *:80>
ServerName www.mysite.com
DocumentRoot /var/www/www/
ErrorLog /var/www/www/logs/error.log
CustomLog /var/www/www/logs/access.log combined
</VirtualHost>
<VirtualHost *:443>
ServerName www.mysite.com
DocumentRoot /var/www/www/
ErrorLog /var/www/www/logs/error.log
CustomLog /var/www/www/logs/access.log combined
</VirtualHost>
It's working fine without the second virtual host, but not when I Add it.
Anyone has an idea ?
Ok, I had a conflict with the default 443 vhost of amazone EC2.
The things to know is that a default ssl virtual host is already set in /etc/httpd/conf.d/ssl.conf
that's all

Apache default VirtualHost

How can I set a default VirtualHost in Apache?
Preferably, I want the default host not to be the same as the IP address host. Now I have something like this:
NameVirtualHost *
<VirtualHost *>
ServerAdmin admin#example.com
DocumentRoot /someOtherDir/
ServerAlias ip.of.the.server
</VirtualHost>
<VirtualHost *>
ServerAdmin admin#example.com
DocumentRoot /someroot/
ServerAlias example.com *.example.com
</VirtualHost *>
If a domain is forwarded to my server, but isn't in this vhost.conf file, the files from /someOtherDir/ are loaded, as expected. But I want to be able to use a different root for the IP address itself and domains which aren't added to the vhost.conf file (yet). Is this possible?
I found the answer: I remembered that Apache uses the first block if no other matching block is found, so I've added a block without a serveralias at the top of the blocks:
NameVirtualHost *
<VirtualHost *>
DocumentRoot /defaultdir/
</VirtualHost>
<VirtualHost *>
ServerAdmin admin#example.com
DocumentRoot /someOtherDir/
ServerAlias ip.of.the.server
</VirtualHost>
<VirtualHost *>
ServerAdmin admin#example.com
DocumentRoot /someroot/
ServerAlias example.com *.example.com
</VirtualHost>
If you are using Debian style virtual host configuration (sites-available/sites-enabled), one way to set a Default VirtualHost is to include the specific configuration file first in httpd.conf or apache.conf (or what ever is your main configuration file).
# To set default VirtualHost, include it before anything else.
IncludeOptional sites-enabled/my.example.com.conf
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
# Load virtual host config files from "/etc/httpd/sites-enabled/".
IncludeOptional sites-enabled/*.conf
The other answers here didn't work for me, but I found a pretty simple solution that did work.
I made the default one the last one listed, and I gave it ServerAlias *.
For example:
NameVirtualHost *:80
<VirtualHost *:80>
ServerName www.secondwebsite.example
ServerAlias secondwebsite.example *.secondwebsite.example
DocumentRoot /home/secondwebsite/web
</VirtualHost>
<VirtualHost *:80>
ServerName www.defaultwebsite.example
ServerAlias *
DocumentRoot /home/defaultwebsite/web
</VirtualHost>
If the visitor didn't explicitly choose to go to something ending in secondwebsite.example, they get the default website.
Actually, I'm using Virtual host configuration (sites-available / sites-enabled) on EC2 Linux AMI with Apache/2.4.39 (Amazon). So, I have 1 EC2 instance to serve many sites (domains).
Considering that you already have Virtual Host installed and working. In my folder /etc/httpd/sites-available, I have some files with domain names (suffix .conf), for example: example.com.conf. Create a new file like that.
sudo nano /etc/httpd/sites-available/example.com.conf
<VirtualHost *:80>
ServerName www.example.com
ServerAlias example.com
DocumentRoot /var/www/html/domain
</VirtualHost>
For each file.conf in sites-available, I create a symbolic link:
sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf
This is the default configuration, so, if access directly by IP of Server, you will be redirect to DocumentRoot of the first file (.conf) in sites-available folder, sorted by filename.
To have a default DocumentRoot folder when access by IP, you have to create a file named 0a.conf, then Apache will serve this site because this new file will be the first in sites-available folder.
You must create a symbolic link:
sudo ln -s /etc/httpd/sites-available/0a.conf /etc/httpd/sites-enabled/0a.conf
To check serving order, use it:
sudo apachectl -S
Now, restart Apache, and check out it.
Obligatory - none of the previous answers worked for me. I inherited a strange combination of IP address-based virtual hosts and * vhosts (not assigned/catch all IP addresses) based virtual hosts in this Apache configuration messed up by ISPConfig.
I wanted Apache to serve not configured hosts with the same page.
I had: not configured hosts went to the first vhost after 000-default.conf. No matter I had *:80 catch all defined as the first vhost, instead of default Apache would load first defined site:
<VirtualHost *:80>
ServerAdmin webmaster#localhost
DocumentRoot /var/www/html
</VirtualHost>
Although it's not completely valid configuration, what finally worked was adding an IP address-based virtualhost without ServerName/ServerAlias defined:
<VirtualHost 192.168.10.10:80>
ServerAdmin webmaster#localhost
DocumentRoot /var/www/html
</VirtualHost>
<VirtualHost 192.168.10.10:443>
ServerAdmin webmaster#localhost
DocumentRoot /var/www/html
SSLEngine On
...
</VirtualHost>
$ apachectl -S outputs IP address-based vhosts first, and * based vhosts later, and finally my default site is loaded before real site:
AH00548: NameVirtualHost has no effect and will be removed in the next release /etc/apache2/sites-enabled/000-default.conf:50
192.168.10.10:80 is a NameVirtualHost
default server server.tld (/etc/apache2/sites-enabled/000-default.conf:34)
port 80 namevhost server.tld (/etc/apache2/sites-enabled/000-default.conf:34)
port 80 namevhost some-site.tld (/etc/apache2/sites-enabled/100-some-site.tld.vhost:7)
...
46.23.86.103:443 is a NameVirtualHost
default server server.tld (/etc/apache2/sites-enabled/000-default.conf:38)
port 443 namevhost server.tld (/etc/apache2/sites-enabled/000-default.conf:38)
port 443 namevhost some-site.tld (/etc/apache2/sites-enabled/100-some-site.tld.vhost:182)
...
*:80 is a NameVirtualHost
default server server.tld (/etc/apache2/sites-enabled/000-default.conf:1)
port 80 namevhost server.tld (/etc/apache2/sites-enabled/000-default.conf:1)
Word of notice - in a configuration like this, * vhosts won't work, so you need to apply IP addresses to all vhosts.
An alternative setting is to have the default virtual host at the end of the config file rather than the beginning. This way, all alternative virtual hosts will be checked before being matched by the default virtual host.
Example:
NameVirtualHost *:80
Listen 80
...
<VirtualHost *:80>
ServerName host1
DocumentRoot /someDir
</VirtualHost>
<VirtualHost *:80>
ServerName host2
DocumentRoot /someOtherDir
</VirtualHost>
<VirtualHost *:80>
DocumentRoot /defaultDir
</VirtualHost>
I had the same issue. I could fix it by adding the following in httpd.conf itself before the IncludeOptional directives for virtual hosts. Now localhost and the IP 192.168.x.x both points to the default test page of Apache. All other virtual hosts are working as expected.
<VirtualHost *:80>
DocumentRoot /var/www/html
</VirtualHost>
Reference: https://httpd.apache.org/docs/2.4/vhosts/name-based.html#defaultvhost
Only supported and correct answer is:
<VirtualHost _default_:*>
DocumentRoot "/www/default"
</VirtualHost>
or my own version to return 403:
<VirtualHost _default_:*>
<Location />
Require all denied
</Location>
</VirtualHost>
The NameVirtualHost option would be a good option.
The solution is:
# apache2.conf
# #warning this is specific to apache 2.2
NameVirtualHost *:80
Listen 80
# ...
# aaaa.example.conf
<VirtualHost *:80>
ServerName aaaa.example
DocumentRoot /defaultDir
</VirtualHost>
# host1.example.conf
<VirtualHost *:80>
ServerName host1.example
DocumentRoot /someDir
</VirtualHost>
# host2.example.conf
<VirtualHost *:80>
ServerName host2.example
DocumentRoot /someOtherDir
</VirtualHost>
In my case, to work, I created a VirtualHost (n.e. VirtualHost per CNAME) called aaaa.example since I have different files for different VirtualHosts and knowing that Apache reads them in alphabetical order.