Homestead

Configuring Homestead NGINX default provision script

Max Hutschenreiter -

If you would like to customize Nginx configuration for a specific site, but you don’t want to be customizing it each time when you run the provision flag in your reload command,

then here we go with a quick tutorial on how to customize Nginx blocks they will be deployed each time you reload your vagrant.

When you navigate yourself to your Homestead root directory, you should be able to open the scripts directory where you can see the following script files:
clear-nginx.sh			create-couch.sh			create-mongo.sh			cron-schedule.sh		hosts-add.sh			site-types
clear-variables.sh		create-ecosystem.sh		create-mysql.sh			features			hosts-reset.sh
configure-avahi.sh		create-influxdb.sh		create-ngrok.sh			flip-webserver.sh		install-load-balancer.sh
create-certificate.sh		create-minio-bucket.sh		create-postgres.sh		homestead.rb			install-xhgui.sh
Enter cd site-types, and from there copy laravel.sh (is default script) into the new config file:
cp laravel.sh newconfig.sh
And then edit newconfig.sh *from line 40 to 90:
#!/usr/bin/env bash
 
declare -A params=$6       # Create an associative array
declare -A headers=${9}    # Create an associative array
declare -A rewrites=${10}  # Create an associative array
paramsTXT=""
if [ -n "$6" ]; then
   for element in "${!params[@]}"
   do
      paramsTXT="${paramsTXT}
      fastcgi_param ${element} ${params[$element]};"
   done
fi
headersTXT=""
if [ -n "${9}" ]; then
   for element in "${!headers[@]}"
   do
      headersTXT="${headersTXT}
      add_header ${element} ${headers[$element]};"
   done
fi
rewritesTXT=""
if [ -n "${10}" ]; then
   for element in "${!rewrites[@]}"
   do
      rewritesTXT="${rewritesTXT}
      location ~ ${element} { if (!-f \$request_filename) { return 301 ${rewrites[$element]}; } }"
   done
fi
 
if [ "$7" = "true" ]
then configureXhgui="
location /xhgui {
        try_files \$uri \$uri/ /xhgui/index.php?\$args;
}
"
else configureXhgui=""
fi
 
block="server {
    listen ${3:-80};
    listen ${4:-443} ssl http2;
    server_name .$1;
    root \"$2\";
 
    index index.html index.htm index.php;
 
    charset utf-8;
 
    $rewritesTXT
 
    location / {
        try_files \$uri \$uri/ /index.php?\$query_string;
        $headersTXT
    }
 
    $configureXhgui
 
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
 
    access_log off;
    error_log  /var/log/nginx/$1-error.log error;
 
    sendfile off;
 
    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php$5-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name;
        $paramsTXT
 
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
        fastcgi_connect_timeout 300;
        fastcgi_send_timeout 300;
        fastcgi_read_timeout 300;
    }
	
	
    location ~ /\.ht {
        deny all;
    }
 
    ssl_certificate     /etc/nginx/ssl/$1.crt;
    ssl_certificate_key /etc/nginx/ssl/$1.key;
}
"
 
echo "$block" > "/etc/nginx/sites-available/$1"
ln -fs "/etc/nginx/sites-available/$1" "/etc/nginx/sites-enabled/$1"
Then let’s get back to your Homestead.yaml file, and in the sites section append
    - map: this_is.test
 
      to: /home/vagrant/this_is.test/public
 
      type: "newconfig"
That will build this customized Nginx configuration on that specific site each time you run with –provision flag.

Tags: Homestead · Nginx · Vagrant

Want products news and updates?

Sign up for our newsletter to stay up to date.

We care about the protection of your data. Read our Privacy Policy.

Impressions from our Team

  • Happy birthday 🎁🎈🎂 Filip - #

  • Another day another #mandarinacakeshop 🎂 😀 - #

  • Happy Birthday Ognjen! And marry Christmas to all other 🎄#notacakeshop - #

  • #Office #Garden - #

  • #workhard - #

  • #belgrade #skyline - #

  • #happybirthday Phil :) - #

  • #happybirthday Stefan 🥂 - #

  • #happybirthday Lidija 🍾 - #

  • Say hi 👋 to our newest team member ☕️ - #

  • #bithday #cake 😻 - #

  • #stayathome #homeoffice #42coders - #

  • #stayathome #homeoffice #42coders #starwars :) - #

  • #stayathome #homeoffice #42coders - #

  • We had a really nice time with #laracononline #laravel - #

  • Happy Birthday 🎂 Miloš - #

  • Happy Birthday 🎂Nikola - #

  • #42coders #christmas #dinner what a nice evening :) - #

  • Happy Birthday 🎂 Ognjen - #

  • Wish you all a merry Christmas 🎄🎁 - #

See more!

© 2024 42coders All rights reserved.