nginx + varnish + apache + SSL ( working fine )
- Thread starter mohamad_oops
- Start date
mohamad_oops
New member
- Joined
- Oct 9, 2016
- Messages
- 2
how use varnish with SSL (HTTPS) in directadmin :
1. Install NGINX+Apache+php-fpm
2. Install Varnish 6
download :
http://varnish-cache.org/
https://packagecloud.io/varnishcache
3. change ram usage :
in file : /etc/varnish/varnish.params
default is 256m
4. Copy files :
/usr/local/directadmin/data/templates/nginx_server.conf
/usr/local/directadmin/data/templates/nginx_server_sub.conf
/usr/local/directadmin/data/templates/nginx_server_secure.conf
/usr/local/directadmin/data/templates/nginx_server_secure_sub.conf
to folder :
/usr/local/directadmin/data/templates/custom/
Modify the files in folder :
/usr/local/directadmin/data/templates/custom/
in files : nginx_server.conf & nginx_server_sub.conf changes is :
to
and in files : nginx_server_secure.conf & nginx_server_secure_sub.conf changes is :
to
6. Rewrite nginx virtual hosts: (ssh code)
7. restart PHP & APACHE & NGINX & VARNISH and enable chkconfig varnish
in centos 6 : (for example php 7.2 = php-fpm72 )
in centos 7 : (for example php 7.2 = php-fpm72 )
8. for loop errors in some cms :
in wordpress : (for use https)
insert this code in file wp-config.php : (above of “/* That’s all, stop editing! Happy blogging. */ ” )
in magento : (for use https)
Add this to your the Magento .htaccess file located in your docroot
9. test working :
you should see: “via: 1.1 varnish (Varnish/6.0)”
enjoy speed
if you want to remove varnish :
remove this files :
/usr/local/directadmin/data/templates/custom/nginx_server.conf
/usr/local/directadmin/data/templates/custom/nginx_server_sub.conf
/usr/local/directadmin/data/templates/custom/nginx_server_secure.conf
/usr/local/directadmin/data/templates/custom/nginx_server_secure_sub.conf
and rewrite virtual hosts:
in centos 6 :
in centos 7 :
1. Install NGINX+Apache+php-fpm
2. Install Varnish 6
download :
http://varnish-cache.org/
https://packagecloud.io/varnishcache
Code:
yum install epel-release
yum install varnish
3. change ram usage :
in file : /etc/varnish/varnish.params
default is 256m
4. Copy files :
/usr/local/directadmin/data/templates/nginx_server.conf
/usr/local/directadmin/data/templates/nginx_server_sub.conf
/usr/local/directadmin/data/templates/nginx_server_secure.conf
/usr/local/directadmin/data/templates/nginx_server_secure_sub.conf
to folder :
/usr/local/directadmin/data/templates/custom/
Modify the files in folder :
/usr/local/directadmin/data/templates/custom/
in files : nginx_server.conf & nginx_server_sub.conf changes is :
Code:
proxy_pass http://|IP|:|PORT_8080|;
to
Code:
proxy_pass http://|IP|:6081;
and in files : nginx_server_secure.conf & nginx_server_secure_sub.conf changes is :
Code:
proxy_pass http://|IP|:|PORT_8081|;
proxy_set_header X-Client-IP $remote_addr;
proxy_set_header X-Accel-Internal /nginx_static_files;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_hide_header Upgrade;
to
Code:
proxy_pass http://|IP|:6081;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-Port 443;
proxy_set_header Host $host;
6. Rewrite nginx virtual hosts: (ssh code)
Code:
echo "action=rewrite&value=nginx" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq
7. restart PHP & APACHE & NGINX & VARNISH and enable chkconfig varnish
in centos 6 : (for example php 7.2 = php-fpm72 )
Code:
service php-fpm72 restart
service httpd restart
service nginx restart
service varnish restart
chkconfig --add varnish
chkconfig varnish on
in centos 7 : (for example php 7.2 = php-fpm72 )
Code:
systemctl restart php-fpm72
systemctl restart httpd
systemctl restart nginx
systemctl restart varnish
systemctl enable varnish
8. for loop errors in some cms :
in wordpress : (for use https)
insert this code in file wp-config.php : (above of “/* That’s all, stop editing! Happy blogging. */ ” )
Code:
if (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
$_SERVER['HTTPS']='on';
in magento : (for use https)
Add this to your the Magento .htaccess file located in your docroot
Code:
SetEnvIf X-Forwarded-Proto https HTTPS=on
9. test working :
Code:
curl -I https://yoursite.com
you should see: “via: 1.1 varnish (Varnish/6.0)”
enjoy speed
if you want to remove varnish :
remove this files :
/usr/local/directadmin/data/templates/custom/nginx_server.conf
/usr/local/directadmin/data/templates/custom/nginx_server_sub.conf
/usr/local/directadmin/data/templates/custom/nginx_server_secure.conf
/usr/local/directadmin/data/templates/custom/nginx_server_secure_sub.conf
and rewrite virtual hosts:
Code:
echo "action=rewrite&value=nginx" >> /usr/local/directadmin/data/task.queue
/usr/local/directadmin/dataskq
in centos 6 :
Code:
service php-fpm72 restart
service httpd restart
service nginx restart
in centos 7 :
Code:
systemctl restart php-fpm72
systemctl restart httpd
systemctl restart nginx
Code:
yum remove varnish
An infinite loop (besides already mentioned by the TS) might occur if you detect HTTP in .htaccess and redirects to HTTPS using mod_rewrite.
You should check and update mod_rewrite rules in .htaccess to rely on X-Forwarded-Proto:
Code:
RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https [NC]
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
You might try and add:
Code:
SetEnvIf X-Forwarded-Proto “^https$” HTTPS=on
SetEnvIf X-Forwarded-Proto “^https$” X_SERVER_PORT=443
SetEnvIf X-Forwarded-Proto “^https$” X_REQUEST_SCHEME=https
into /etc/httpd/conf/extra/httpd-includes.conf and restart Apache.