Nginx Configuration1. Virtual Host2. HTTPSEdit /etc/nginx/sites-avaiable/default. The configuration for HTTPS is already there but commented out. Uncomment the two lines that start with "listen" then add the locations for the SSL certificate and certificate key. For example: listen 443 ssl default_server; ssl_certificate /etc/ssl/certs/sun.cer; 3. Allow ~/public_htmlEdit /etc/nginx/sites-available/default and add the following: location ~ ^/~(.+?)(/.*)?$ { 4. PHPFirst install FastCGI Process Manager and a few other packages commonly used in PHP development: > sudo apt install php-fpm php-mysql composer You need to pay attention to which PHP version is installed (e.g. php7.0 or php7.2) as this version number is used in various places later. Here we assume it's 7.2. Edit /etc/php/7.2/fpm/php.ini and set cgi.fix_pathinfo to 0 as recommended here, then restart the PHP processor: > sudo systemctl restart php7.2-fpm Edit /ect/nginx/sites-available/default, uncomment the parts related to php-fpm and add index.php (read the comments in the file carefully). You'll need to change php7.0-fpm.sock to the actual PHP version number (e.g. php7.2-fpm.sock). Save and check the configuration and reload Nginx. 4. Reverse ProxyThere are two common situations. First, if the service runs at http://<host>:<port>/<path> and needs to be proxied at http(s)://<host>/<path> (note that the two paths match), it can be done with the following configuration (using port 8080 as an example): location /path { Second, if the service runs at http://<host>:<port> and needs to be proxied at http(s)://<host>/<path> (note that the proxy has a path but the service doesn't, which is common for Node.js server applications), it can be configured like the following (using port 3001 as an example): location /path { This redirect trick makes Nginx "consume" the extra path so the correct path is passed to the service. 5. Misc.6. Common Commands
|