Giunsa ang Pag-install sa Nginx sa mga Virtual Host ug SSL Certificate


Ang Nginx (mubo sa Engine-x) kay libre, open source, gamhanan, high-performance ug scalable HTTP ug reverse proxy server, mail ug standard TCP/UDP proxy server. Sayon nga gamiton ug i-configure, nga adunay usa ka yano nga sinultian nga pag-configure. Ang Nginx mao na karon ang gipalabi nga web server software alang sa pagpaandar sa mga site nga puno sa load, tungod sa scalability ug performance niini.

Niini nga artikulo hisgutan kung giunsa paggamit ang Nginx ingon usa ka HTTP server, i-configure kini aron mag-alagad sa sulud sa web, ug i-set up ang mga virtual host nga nakabase sa ngalan, ug paghimo ug pag-install sa SSL alang sa luwas nga pagpadala sa datos, lakip ang usa ka sertipiko nga gipirmahan sa kaugalingon sa Ubuntu ug CentOS. .

Unsaon Pag-instalar sa Nginx Web Server

Una magsugod pinaagi sa pag-instalar sa Nginx package gikan sa opisyal nga mga repository gamit ang imong package manager sama sa gipakita.

------------ On Ubuntu ------------ 
$ sudo apt update 
$ sudo apt install nginx 

------------ On CentOS ------------
$ sudo yum update 
$ sudo yum install epel-release 
$ sudo yum install nginx 

Human ma-install ang Nginx package, kinahanglan nimo nga sugdan ang serbisyo sa pagkakaron, pahimoa kini nga auto-start sa boot time ug tan-awa ang status niini, gamit ang mosunod nga mga sugo. Timan-i nga sa Ubuntu, kini kinahanglan nga magsugod ug awtomatik nga mahimo samtang ang package pre-configure.

$ sudo systemctl start nginx
$ sudo systemctl enable nginx
$ sudo systemctl status nginx

Niini nga punto, ang Nginx web server kinahanglan nga nagdagan ug nagdagan, mahimo nimong pamatud-an ang status gamit ang netstat command.

$ sudo netstat -tlpn | grep nginx

Kung ang imong sistema adunay firewall nga gipagana, kinahanglan nimo nga ablihan ang port 80 ug 443 aron tugutan ang trapiko sa HTTP ug HTTPS, pinaagi niini, pinaagi sa pagdagan.

------------ On CentOS ------------
$ sudo firewall-cmd --permanent --add-port=80/tcp
$ sudo firewall-cmd --permanent --add-port=443/tcp
$ sudo firewall-cmd --reload

------------ On Ubuntu ------------ 
$ sudo ufw allow 80/tcp
$ sudo ufw allow 443/tcp
$ sudo ufw reload 

Ang sulundon nga pamaagi sa pagsulay sa pag-install sa Nginx ug pagsusi kung kini nagdagan ug makahimo sa pag-alagad sa mga web page mao ang pag-abli sa usa ka web browser ug pagtudlo sa IP sa server.

http://Your-IP-Address
OR
http://Your-Domain.com

Ang usa ka nagtrabaho nga instalasyon kinahanglan nga ipakita sa mosunod nga screen.

Giunsa ang Pag-configure sa Nginx Web Server

Ang mga configuration file sa Nginx nahimutang sa direktoryo /etc/nginxug ang global configuration file nahimutang sa /etc/nginx/nginx.confsa CentOS ug Ubuntu.

Ang Nginx gilangkuban sa mga module nga kontrolado sa lainlaing mga kapilian sa pag-configure, nga nailhan nga mga direktiba. Ang usa ka direktiba mahimo nga yano (sa porma nga ngalan ug mga kantidad nga gitapos sa usa ka ;) o block (adunay dugang nga mga panudlo nga gilakip gamit ang {}). Ug ang usa ka block nga direktiba nga adunay uban nga mga direktiba gitawag nga konteksto.

Ang tanan nga mga direktiba komprehensibo nga gipatin-aw sa dokumentasyon sa Nginx sa website sa proyekto. Mahimo nimong i-refer kini alang sa dugang nga kasayuran.

Sa usa ka sukaranan nga lebel, ang Nginx mahimong magamit sa pag-alagad sa static nga sulod sama sa HTML ug media files, sa standalone mode, diin ang default server block lamang ang gigamit (kaamgid sa Apache diin walay virtual hosts ang na-configure).

Magsugod kami pinaagi sa mubo nga pagpatin-aw sa istruktura sa pag-configure sa panguna nga file sa pag-configure.

 
$ sudo vim /etc/nginx/nginx.conf

Kung imong tan-awon kini nga file sa pag-configure sa Nginx, ang istruktura sa pagsumpo kinahanglan nga makita sama sa mga musunud ug kini gitawag nga panguna nga konteksto, nga adunay daghang uban pang yano ug block nga mga direktiba. Ang tanan nga trapiko sa web gidumala sa konteksto sa http.

user  nginx;
worker_processes  1;
.....

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;
.....

events {
       	.....
}

http {
	server{
		…….
	}
	.....
}

Ang mosunod usa ka sample nga Nginx main configuration (/etc/nginx/nginx.conf) nga file, diin ang http block sa ibabaw adunay sulod nga naglakip nga direktiba nga nagsulti sa Nginx kung asa makit-an ang mga file sa configuration sa website (virtual host configurations).

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
        worker_connections 768;
        # multi_accept on;
}

http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

   include /etc/nginx/mime.types;
   default_type application/octet-stream;

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    sendfile        on;
    #tcp_nopush     on;
    keepalive_timeout  65;
    #gzip  on;
	
    include /etc/nginx/conf.d/*.conf;
}

Timan-i nga sa Ubuntu, makit-an usab nimo ang usa ka dugang nga naglakip nga direktiba (lakip ang /etc/nginx/sites-enabled/*;), diin ang direktoryo /etc/nginx/sites-enabled/ nagtipig og mga symlink sa mga file sa configuration sa mga website nga gihimo sa/etc/nginx/sites-available/, aron mahimo ang mga site. Ug ang pagtangtang sa usa ka symlink makapugong sa partikular nga site.

Base sa imong tinubdan sa pag-instalar, imong makita ang default nga file sa configuration sa website sa /etc/nginx/conf.d/default.conf (kon imong gi-install gikan sa opisyal nga NGINX repository ug EPEL) o /etc/nginx/sites-enabled/default (kung nag-install ka gikan sa mga repositoryo sa Ubuntu).

Kini ang among sample default nginx server block nga nahimutang sa /etc/nginx/conf.d/default.conf sa test system.

server {
    listen    80 default_server;
    listen    [::]:80 default_server;
    server_name    _;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
}

Usa ka mubo nga katin-awan sa mga direktiba sa pag-configure sa ibabaw:

  • paminaw: nagpiho sa port nga paminawon sa server.
  • server_name: naghubit sa server name nga mahimong eksaktong mga ngalan, wildcard name, o regular nga ekspresyon.
  • root: nagpiho sa direktoryo diin ang Nginx magsilbi sa mga web page ug ubang mga dokumento.
  • index: nagpiho sa (mga) tipo sa (mga) index file nga isilbi.
  • lokasyon: gigamit sa pagproseso sa mga hangyo alang sa piho nga mga file ug folder.

Gikan sa usa ka web browser, kung imong itudlo ang server gamit ang hostname localhost o ang IP address niini, giproseso niini ang hangyo ug gisilbi ang file /var/www/html/index.html, ug gitipigan dayon ang panghitabo sa log sa pag-access niini (/ var/log/nginx/access.log) nga adunay 200 (OK) nga tubag. Sa kaso sa usa ka sayup (napakyas nga panghitabo), kini nagrekord sa mensahe sa error log (/var/log/nginx/error.log).

Aron mahibal-an ang dugang bahin sa pag-log in sa Nginx, mahimo nimong i-refer ang Giunsa Pag-configure ang Custom Access o Error Log Format sa Nginx.

Imbes nga gamiton ang default log files, mahimo nimong ipasabot ang custom log files para sa lain-laing mga web site, sama sa atong tan-awon sa ulahi, ubos sa seksyon nga \pag-set up sa name-based virtual hosts (server blocks).

Aron mapugngan ang pag-access sa imong website/aplikasyon o pipila ka bahin niini, mahimo nimong i-setup ang sukaranan nga pag-authenticate sa HTTP. Mahimo kining gamiton aron mapugngan ang pag-access sa tibuok HTTP server, indibidwal nga mga bloke sa server o mga bloke sa lokasyon.

Pagsugod pinaagi sa paghimo og file nga magtipig sa imong mga kredensyal sa pag-access (username/password) pinaagi sa paggamit sa htpasswd utility.

 
$ yum install httpd-tools		#RHEL/CentOS
$ sudo apt install apache2-utils	#Debian/Ubuntu

Isip usa ka pananglitan, atong idugang ang user admin niini nga lista (mahimo nimong idugang ang daghang mga tiggamit kutob sa mahimo), diin ang -c nga opsyon gigamit sa pagtino sa password file, ug ang -B aron ma-encrypt ang password. Kung naigo nimo ang [Enter], hangyoon ka nga mosulod sa password sa mga tiggamit:

$ sudo htpasswd -Bc /etc/nginx/conf.d/.htpasswd admin

Dayon, i-assign nato ang hustong permiso ug pagpanag-iya sa password file (ilisan ang user ug group nginx sa www-data sa Ubuntu).

$ sudo chmod 640 /etc/nginx/conf.d/.htpasswd
$ sudo chown nginx:nginx /etc/nginx/conf.d/.htpasswd

Sama sa among gihisgutan sa sayo pa, mahimo nimong pugngan ang pag-access sa imong webserver, usa ka website (gamit ang block sa server) o piho nga direktoryo o file. Duha ka mapuslanon nga direktiba ang magamit aron makab-ot kini:

  • auth_basic – i-on ang validation sa user name ug password gamit ang protocol nga \HTTP Basic Authentication.
  • auth_basic_user_file – nagpiho sa file sa kredensyal.

Isip usa ka pananglitan, among ipakita kung giunsa pagpanalipod sa password ang direktoryo /var/www/html/protected.

server {
    listen         80 default_server;
    server_name    localhost;
    root           /var/www/html/;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
    location /protected/ {
        auth_basic              "Restricted Access!";
        auth_basic_user_file    /etc/nginx/conf.d/.htpasswd;
    }
}

Karon, i-save ang mga pagbag-o ug i-restart ang serbisyo sa Nginx.

$ sudo systemctl restart nginx 

Sa sunod higayon nga imong itudlo ang imong browser sa ibabaw nga direktoryo (http://localhost/protected) hangyoon ka sa pagsulod sa imong login credentials (username admin ug ang gipili nga password).

Ang usa ka malampuson nga pag-login nagtugot kanimo sa pag-access sa mga sulud sa direktoryo, kung dili makakuha ka usa ka sayup nga \401 Authorization Required.

Giunsa ang Pag-set up nga nakabase sa Pangalan nga Virtual host (Server Blocks) sa Nginx

Gitugotan sa konteksto sa server ang daghang mga dominyo/site nga matipigan ug magsilbi gikan sa parehas nga pisikal nga makina o virtual private server (VPS). Daghang mga bloke sa server (nagrepresentar sa mga virtual host) mahimong ipahayag sulod sa konteksto sa http para sa matag site/domain. Ang Nginx nagdesisyon kung unsang server ang nagproseso sa usa ka hangyo base sa header sa hangyo nga nadawat niini.

Atong ipakita kini nga konsepto gamit ang mosunod nga mga dummy domain, ang matag usa nahimutang sa gipiho nga direktoryo:

  • wearelinux-console.net – /var/www/html/wearelinux-console.net/
  • welovelinux.com – /var/www/html/welovelinux.com/

Sunod, itudlo ang angay nga mga pagtugot sa direktoryo alang sa matag site.

$ sudo chmod -R 755 /var/www/html/wearelinux-console.net/public_html 
$ sudo chmod -R 755 /var/www/html/welovelinux.com/public_html 

Karon, paghimo ug sample nga index.html file sulod sa matag public_html directory.

<html>
	<head>
		<title>www.wearelinux-console.net</title>
	</head>
<body>
	<h1>This is the index page of www.wearelinux-console.net</h1>
</body>
</html>

Sunod, paghimo sa server block configuration files alang sa matag site sulod sa /etc/httpd/conf.d directory.

$ sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf
$ sudo vi /etc/nginx/conf.d/welovelinux.com.conf

Idugang ang mosunod nga server block deklarasyon sa wearelinux-console.net.conf file.

server {
    listen         80;
    server_name  wearelinux-console.net;
    root           /var/www/html/wearelinux-console.net/public_html ;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

Sunod, idugang ang mosunod nga server block deklarasyon sa welovelinux.com.conf file.

server {
    listen         80;
    server_name    welovelinux.com;
    root           /var/www/html/welovelinux.com/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }
     
}

Aron magamit ang bag-o nga mga pagbag-o, i-restart ang Nginx web server.

$ sudo systemctl restart nginx

ug ang pagtudlo sa imong web server sa mga adres sa ibabaw kinahanglan nga makita nimo ang mga nag-unang panid sa mga dummy domain.

http://wearelinux-console.net
http://welovelinux.com

Importante: Kung gipagana nimo ang SELinux, ang default nga configuration niini dili motugot sa Nginx nga maka-access sa mga file gawas sa iladong awtorisado nga mga lokasyon (sama sa /etc/nginx para sa mga configuration, /var/log/nginx para sa mga log, /var/www/html para sa web files etc..).

Mahimo nimo kini madumala pinaagi sa pag-disable sa SELinux, o pagtakda sa husto nga konteksto sa seguridad. Alang sa dugang kasayuran, tan-awa kini nga giya: gamit ang Nginx ug Nginx Plus nga adunay SELinux sa Nginx Plus website.

Giunsa ang Pag-install ug Pag-configure sa SSL sa Nginx

Ang mga sertipiko sa SSL makatabang aron mahimo ang luwas nga http (HTTPS) sa imong site, nga hinungdanon sa pag-establisar og kasaligan/secure nga koneksyon tali sa mga end user ug sa imong server pinaagi sa pag-encrypt sa impormasyon nga gipasa ngadto, gikan, o sulod sa imong site.

Among tabonan kon unsaon paghimo ug pag-instalar sa usa ka self-signed nga sertipiko, ug pagmugna og certificate signing request (CSR) aron makakuha og SSL certificate gikan sa usa ka certificate authority (CA), nga gamiton sa Nginx.

Ang mga sertipiko nga gipirmahan sa kaugalingon libre sa paghimo ug praktikal nga magamit alang sa mga katuyoan sa pagsulay ug alang sa internal nga mga serbisyo sa LAN lamang. Alang sa mga server nga nag-atubang sa publiko, girekomenda nga mogamit usa ka sertipiko nga gi-isyu sa usa ka CA (pananglitan Let's Encrypt) aron mapadayon ang pagkakasaligan niini.

Aron makamugna og self-signed nga sertipiko, paghimo una og direktoryo diin ang imong mga sertipiko itago.

$ sudo mkdir /etc/nginx/ssl-certs/

Dayon paghimo sa imong kaugalingon nga gipirmahan nga sertipiko ug ang yawe gamit ang openssl command line tool.

$ sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/nginx/ssl-certs/nginx.key -out /etc/nginx/ssl-certs/nginx.crt

Atong ihulagway sa daklit ang mga opsyon nga gigamit sa sugo sa ibabaw:

  • req -X509 – nagpakita nga nagmugna kami og x509 nga sertipiko.
  • -nodes (WALAY DES) – nagpasabot nga \ayaw i-encrypt ang yawe.
  • -mga adlaw 365 – nagpiho sa gidaghanon sa mga adlaw nga ang sertipiko mahimong balido.
  • -newkey rsa:2048 – nagtino nga ang yawe nga gihimo gamit ang RSA algorithm kinahanglan nga 2048-bit.
  • -keyout /etc/nginx/ssl-certs/nginx.key – nagtino sa tibuok agianan sa RSA key.
  • -out /etc/nginx/ssl-certs/nginx.crt – nagpiho sa tibuok agianan sa certificate.

Sunod, ablihi ang imong virtual host configuration file ug idugang ang mosunod nga mga linya sa deklarasyon sa block sa server nga naminaw sa port 443. Atong sulayan gamit ang virtual host file /etc/nginx/conf.d/wearelinux-console.net.conf.

$ sudo vi /etc/nginx/conf.d/wearelinux-console.net.conf

Dayon idugang ang ssl nga direktiba sa nginx configuration file, kini kinahanglan nga tan-awon sama sa ubos.

server {
    listen 80;
    listen [::]:80;
    listen 443 ssl;
    listen [::]:443 ssl;
    
    ssl on;
    ssl_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_trusted_certificate /etc/nginx/ssl-certs/nginx.crt;
    ssl_certificate_key /etc/nginx/ssl-certs/nginx.key;
    
    server_name  wearelinux-console.net;
    root           /var/www/html/wearelinux-console.net/public_html;
    index          index.html;
    location / {
                try_files $uri $uri/ =404;
        }

}

Karon i-restart ang Nginx ug itudlo ang imong browser sa mosunod nga adres.

https://www.wearelinux-console.net

Kung gusto nimo mupalit ug SSL certificate gikan sa CA, kinahanglan ka nga maghimo ug certificate signing request (CSR) sama sa gipakita.

$ sudo openssl req -newkey rsa:2048 -nodes -keyout /etc/nginx/ssl-certs/example.com.key -out /etc/nginx/ssl-certs/example.com.csr

Makahimo ka usab og CSR gikan sa kasamtangan nga pribadong yawe.

$ sudo openssl req -key /etc/nginx/ssl-certs/example.com.key -new -out /etc/nginx/ssl-certs/example.com.csr

Unya, kinahanglan nimo nga ipadala ang CSR nga gihimo sa usa ka CA aron hangyoon ang pag-isyu sa usa ka sertipiko sa SSL nga gipirmahan sa CA. Sa higayon nga madawat nimo ang imong sertipiko gikan sa CA, mahimo nimo kining i-configure sama sa gipakita sa ibabaw.

Niini nga artikulo, among gipasabut kung giunsa ang pag-install ug pag-configure sa Nginx; gisakup kung giunsa ang pag-setup nga nakabase sa ngalan nga virtual hosting nga adunay SSL aron masiguro ang mga pagpadala sa datos tali sa web server ug usa ka kliyente.

Kung nakasinati ka ug bisan unsang mga kapakyasan sa panahon sa imong proseso sa pag-install/konfigurasyon sa nginx o adunay bisan unsang mga pangutana o komento, gamita ang porma sa feedback sa ubos aron maabot kami.