How to Configure Nginx to Run websites
This is how to configure nginx to serve a website in Ubuntu 18.04
Create a .conf file in /etc/nginx/sites-available. For instance, you can run touch blog.app.conf in the sites-available directory.
Copy this code to the newly created .conf file. Make sure the root points to the public directory.
The server_name should also be the same name as the .conf file
server {
listen 80;
root /home/oem/Code/sar-upgrade/public;
index index.html index.htm index.php;
server_name blog.app;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location / {
try_files $uri $uri/ @rewrite;
}
location ~ \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location /doc/ {
alias /usr/share/doc/;
autoindex on;
allow 127.0.0.1;
deny all;
}
location ~/\.ht {
deny all;
}
}Then type
sudo ln -s /etc/nginx/sites-available/blog.app.conf /etc/nginx/sites-enabled/Be sure to write out the full path Check if there are any errors inside sites-enabled/ folder. If there are errors remove the conf file and try again.
Then type
sudo service nginx restartYou also have to go to /etc/hosts file and add your app name there. Mine looks like this
127.0.0.1 localhost
127.0.1.1 pranay-Z170GT7
127.0.0.1 blog.app
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allroutersYou can see that blog.app is pointing to 127.0.0.1.
If you get 404 not found error then please ensure and check doubly that your path next to ‘root’ is correct. I ran into problems because of incorrect path
If you get 502-Bad gateway error: Check the version of php you have by typing
php --versionDepending on the php version you have, change the above conf file. For example I have php7.3 So my nginx conf file looks like this. Note the php7.3-fpm in the third line end.
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.3-fpm.sock; ## Note php7.3-fpm here
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;After this make sure you have php7.3-fpm installed. If not installed, type this to install it
sudo apt-get update
sudo apt-get install php7.3-fpmAfter this do
sudo systemctl reload nginxYour site should be running
I hope this helps
I can be found in twitter