Wamp with specific port and SSL - php

I managed to install ssl on wamp, and it seems to run nicely. However, by default I used url-rewritten apps where I had to set the main server url to
http://127.0.0.1:8080
The problem is I can only run ssl on port 443, here is my httpd listen:
Listen 127.0.0.1:8080
And virtualhost
<VirtualHost _default_:443>
# General setup for the virtual host
DocumentRoot "C:/wamp/www/"
ServerName 127.0.0.1:443
ServerAdmin admin#example.com
ErrorLog "logs/sslerror_log"
TransferLog "logs/sslaccess_log"
I tried adding 8080 here, but no luck
Any idea?

Related

How do you create virtual hosts (that also use SSL) on localhost with MAMP and Apache?

Suppose you have a local project at /Users/yourname/Sites/example and want to be able to use both http://example.local and https://example.local to reach it on your Mac, using MAMP (I'm using MAMP version 6.6).
Read the answer for the steps to take.
1) Add your custom domain to the hosts file
Open the Finder and choose the Go to folder command from the Go menu. Enter /private/etc/hosts as the path; this will open a Finder window where you will find the hosts file.
Open the hosts file and map your custom domain to 127.0.0.1 (localhost):
127.0.0.1 localhost
127.0.0.1 example.local
Now, when you visit http://example.local, the browser will redirect you to localhost and show your list of local sites (which is not what we want yet, but hey, this is just the first step).
2) Configure MAMP to use Apache's and MySql's default ports
Open MAMP, click on Preferences, then go the Ports tab. By default, MAMP uses port 8888 for Apache and 8889 for MySQL, but it gives you the option to use Apache's default port (80) as well as MySQL's default port (3306): click the 80 & 3306 button to use these ports rather than 8888 and 8889.
3) Enable virtual hosts in Apache
Go to and open the /Applications/MAMP/conf/apache/httpd.conf file. Look for this line:
# Include /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
Uncomment the line by removing the asterisk at the beginning: uncommenting the line enables virtual hosts. (If the line is already uncommented, you're good to go for this step).
4) Configure Apache to listen to port 80
While you have /Applications/MAMP/conf/apache/httpd.conf open, also look for this line:
Listen 8888
and change it to
Listen 80
Listen 443
In the previous step, you told MAMP to use port 80 for Apache, so the first line tells Apache to listen to port 80 rather than port 8888; the second line tells Apache to also listen to requests incoming on port 443: this is the port typically used by SSL connections, so it is an essential step to be able to reach your local site at https:// besides http://.
5) Create a SSL certificate for your local site
You need a SSL certificate to be able to reach your site at https://example.local as well. This can be easily done using the mkcert tool. You can read the instructions on Github, but basically it's about installing the tool, then running:
$ mkcert example.local
This generates two files: a certificate (example.local.pem) and a certificate key (example.local-key.pem).
Move these two files somewhere within your project. For example, you could create a hidden folder at the root of your project called .crt and put them in there.
6) Create a virtual host for your local site
Finally, it's time to actually create a virtual host for your local site. Go to and open the /Applications/MAMP/conf/apache/extra/httpd-vhosts.conf file and include the following:
// These first two lines tell Apache to check for virtual hosts
// whenever a request comes in on port 80 (http://) or 443 (https://)
NameVirtualHost *:80
NameVirtualHost *:443
// This first directive tells Apache to serve the files at "/Users/yourname/Sites/example"
// whenever "http://example.local" is visited
<VirtualHost *:80>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
</VirtualHost>
// This second directive tells Apache to serve the files at "/Users/yourname/Sites/example"
// whenever "https://example.local" is visited, and provides paths to the certificates
// we previously created
<VirtualHost *:443>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/example/.crt/example.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/example/.crt/example.local-key.pem"
</VirtualHost>
That's it! Now you can view your site at both http://example.local and https://example.local
(Remember to adapt the paths to wherever your project and certificates are located though).
7) Need virtual hosts for multiple local sites?
Want to add virtual hosts for more local sites you have, eg. for a site you want to reach at http://test.local?
Go to /private/etc/hosts and add 127.0.0.1 test.local
127.0.0.1 localhost
127.0.0.1 example.local
127.0.0.1 test.local
Generate SSL certificates with mkcert test.local (like we did earlier on step 4).
Finally, update the virtual hosts file as follows:
NameVirtualHost *:80
NameVirtualHost *:443
<VirtualHost *:80>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
</VirtualHost>
<VirtualHost *:443>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/example/.crt/example.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/example/.crt/example.local-key.pem"
</VirtualHost>
// Basically, copy and paste the virtual hosts for the example project
// and update the domain and paths accordingly
<VirtualHost *:80>
ServerName test.local
DocumentRoot "/Users/yourname/Sites/test"
</VirtualHost>
<VirtualHost *:443>
ServerName test.local
DocumentRoot "/Users/yourname/Sites/test"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/test/.crt/test.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/test/.crt/test.local-key.pem"
</VirtualHost>
8) Bonus: add extra configuration to your virtual hosts
The VirtualHost directive can accept a number of extra instructions that tell Apache what to do when a certain request is received.
For instance, suppose our example project is a Node application that can be reached at http://localhost:3000, but we want to use http://example.local to access it. We would have to tell Apache to forward any request made to http://example.local to http://localhost:3000.
NameVirtualHost *:80
NameVirtualHost *:443
// This line loads a module that enables proxying (it's turned off by default)
LoadModule proxy_http_module modules/mod_proxy_http.so
// The ProxyPass and ProxyPassReverse lines tell Apache
// to forward the request to http:// and https://localhost:3000
<VirtualHost *:80>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>
<VirtualHost *:443>
ServerName example.local
DocumentRoot "/Users/yourname/Sites/example"
SSLEngine On
SSLCertificateFile "/Users/yourname/Sites/example/.crt/example.local.pem"
SSLCertificateKeyFile "/Users/yourname/Sites/example/.crt/example.local-key.pem"
ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/
</VirtualHost>

Xampp phpmyadmin provides endless redirect error

My Apache and MySQL instance starts up fine. For some reason, when I attempt to browse to phpmyadmin
I am redirected to
http://localhost:8081/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/https:--localhost/phpmyadmin/
I am sure where to look and the only thing I can think of is that I was trying to add a free SSL certificate to my localhost but it never worked.
This is my current settings.
httpd.conf
Listen 8081
ServerName localhost:8081
httpd-ssl.conf
Listen 8081
ServerName localhost:8081
<VirtualHost _default_:8081>
# General setup for the virtual host
DocumentRoot "C:/xampp/htdocs"
#ServerName www.example.com:8081
ServerName localhost:8081
With the code above I get endless redirections
but changing it to
Listen 4433
ServerName localhost:4433
<VirtualHost _default_:4433>
# General setup for the virtual host
DocumentRoot "C:/xampp/htdocs"
ServerName localhost:4433
doesnt let my apache server start.
Appreciate it if I could get any insight regarding this.
REgards

Lumen routes not working without index.php

I have lumen installed in Vagrant VM (ubunty/trusty64). in my Vagrantfile have enabled config.vm.network "private_network", ip: "192.168.33.10"
My directory structure inside VM is
var
- www
-html
-app
-bootstrap
-database
.... so on.
I made a virtual host inside VM /etc/apache2/sites-available/api.dukaan.pk with below contents
<VirtualHost *:80>
ServerAdmin admin#api.dukaan.pk
ServerName api.dukaan.pk
ServerAlias www.api.dukaan.pk
DocumentRoot /var/www/html/public
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
Then i enabled it with sudo a2ensite api.dukaan.pk.conf. Restarted apache several times no luck.
Then in my host machine Windows 10 i put 192.168.33.10 api.dukaan.pk
Now in my app/Http/routes.php i defined two routes
$app->get('/', function () use ($app) {
return $app->welcome();
});
$app->get('/hello', function() {
return 'Hello World';
});
If i go to http://api.dukaan.pk/index.php/hello It works but if i remove index.ph from this url like http://api.dukaan.pk/hello it shows 404 page not found error.
There is default .htaccess and index.php file in my app/public directory.
Please help me getting rid of this index.php file
Thanks
In the apache instance running in your VM, the VHost you defined run in port 80. You need to be able to access this port 80 running in your guest (ubuntu) from your host machine (windows).
In your Vagrantfile you can define port forwarding to do this. Add this line to your Vagrantfile as stated here:
config.vm.network :forwarded_port, guest: 80, host: 80, auto_correct: true
If port 80 is already use in your host machine (windows) by another process/server/anything, you can set another port than 80 for the host like:
config.vm.network :forwarded_port, guest: 80, host: 8080, auto_correct: true
This solution worked for me. I added the AllowOverride All flag in my api.dukaan.pk.conf file like this
<VirtualHost *:80>
ServerAdmin admin#api.dukaan.pk
ServerName api.dukaan.pk
ServerAlias www.api.dukaan.pk
DocumentRoot /var/www/html/public
<Directory /var/www/html/public>
AllowOverride All
</Directive>
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>
And here is the explanation for this change to work as per #tezla comment
based on the docs When this directive is set to All, then any
directive which has the .htaccess Context is allowed in .htaccess
files.
If you want to run lumen in subdirectory, use alias and this method worked for me, hope it helps somebody else.
In your Apache config file for which ever file is enabled in sites-enabled directory,
After your DocumentRoot /var/www/html/
add Alias /api "/var/www/html/<directoryname>/public" notice there is no trailing slash
and,
<Directory /var/www/html/<directoryname>/public>
AllowOverride All
</Directory>
and rest are as it is. This should get the job done.

Virtual host in XAMPP Windows 7

I am trying to create a virtual host in xampp windows 7.
#NameVirtualHost *:80
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs/project/Trunk/xyz"
ServerName xyz.local
</VirtualHost>
<VirtualHost *:80>
DocumentRoot "C:/xampp/htdocs"
ServerName localhost
</VirtualHost>
host
127.0.0.1 localhost
127.0.0.1 xyz.local
Edit 1: httpd -t -D DUMP_VHOSTS result is given below
VirtualHost configuration:
*:80 is a NameVirtualHost
default server abcd (C:/xampp/apache/conf/extra/httpd-vhosts.conf:45)
port 80 namevhost abcd (C:/xampp/apache/conf/extra/httpd-vhosts.conf:45)
port 80 namevhost localhost (C:/xampp/apache/conf/extra/httpd-vhosts.conf:49)
port 80 namevhost xyz.local (C:/xampp/apache/conf/extra/httpd-vhosts.conf:53)
*:443 www.example.com (C:/xampp/apache/conf/extra/httpd-ssl.conf:102)
Edit 2: Attachment - website not found error
Calling http://xyz.local/ shows the website not found error. But if I configure entire thing with only xyz (not .local in the string xyz.local) it is working fine after calling http://xyz/. I want it as http://xyz.local/. How can I achieve this?

apache is not allwing me to use port number 443 in virtual tag for configuring apache for https service

i am trying to configure apache for https service in xampp , i am almost done
i am jsut struggling with that virtual tag in which i have give information about my self-signed ssl-certificate and key file , apache is not allowing me to use port number 443 in virtual tag even though i have no other service is running on this port , instead its working very well with any other free port like 55000
<VirtualHost *:443>
# Server Certificate:
SSLCertificateFile "C:/xampp/apache/bin/mycert.crt"
# Server Private Key
SSLCertificateKeyFile "C:/xampp/apache/bin/mykey1.key"
SSLEngine On
ServerName localhost
DocumentRoot "C:/xampp/htdocs"
</VirtualHost>

Categories