2016-06-09 6 views
0

Ich bin sehr neu zu NGINX (und bash) und ich versuche, ein Bash-Skript zu schreiben, um die Erstellung einer neuen Website (also Hinzufügen eines Serverblocks) zu einem Webserver zu automatisieren. Aus irgendeinem Grund scheint mein Skript mich jedoch in eine Umleitungsschleife zu bringen. Irgendwelche Ideen?Nginx Redirection Loop

cd /var/www/ 
git clone [email protected]:wardy484/portfolio.git 
mv portfolio kimward.co.uk 
sudo chmod -R 755 kimward.co.uk 

FILE="/etc/nginx/sites-available/kimward.co.uk" 

/bin/cat <<EOM >$FILE 
server { 
    listen 80; 
    listen [::]:80; 

    root /var/www/kimward.co.uk/public; 
    index index.php index.html index.htm; 

    server_name kimward.co.uk www.kimward.co.uk; 

    location/{ 
     try_files $uri $uri/ /index.php?$query_string; 
    } 

    location ~ \.php$ { 
     try_files $uri /index.php =404; 
     fastcgi_split_path_info ^(.+\.php)(/.+)$; 
     fastcgi_pass unix:/var/run/php7.0-fpm.sock; 
     fastcgi_index index.php; 
     fastcgi_param SCRIPT_FILENAME \$document_root\$fastcgi_script_name; 
     include fastcgi_params; 
    } 
} 
EOM 

sudo nano /etc/nginx/sites-available/kimward.co.uk 

sudo ln -s /etc/nginx/sites-available/kimward.co.uk /etc/nginx/sites-enabled/ 
sudo service nginx restart 

cd /var/www/kimward.co.uk 
composer install 
composer update 
+1

Scheint wie '$ uri' und' $ url' sind nginx Variablen, entweichen sie oder verwenden '<< 'EOM'', um Parametererweiterungen zu vermeiden. – andlrc

Antwort

1

$uri, $url, $query_string, etc. sind Variablen und muss maskiert werden, oder sie werden von der Shell erweitert werden:

location/{ 
    try_files \$uri \$uri/ /index.php?\$query_string; 
} 

Gleiche könnte der Fall mit anderen Sonderzeichen sein. Anstatt ihnen alle zu entgehen, sollten Sie << 'EOM' verwenden, die das hier vorliegende Dokument als eine einzelne Zeichenfolge in Anführungszeichen behandelt.

file="/etc/nginx/sites-available/kimward.co.uk" 

/bin/cat <<'EOM' >"$file" 
server { 
    listen 80; 
    listen [::]:80; 
    ... 
    ... 
EOM 

ich verrohrten auch niedriger $FILE da alle Namen in Großbuchstaben für Umgebungsvariablen reserviert sind.