nginx典型应用场景

导读:本文列出nginx配置中的几种典型应用场景,它们包括php项目,java项目,vue项目,以及阿里云https申请时的简易项目,文章末尾将重点介绍root和proxy_pass的区别。

一、php项目 

server{       
   listen  443;
   server_name www.yourdomain.com;
   root         /mnt/projects/yourproject;
   ssl on;
   ssl_certificate   /usr/local/nginx/cert/yourproject/213245013822224.pem;
   ssl_certificate_key  /usr/local/nginx/cert/yourproject/213245013822224.key;
   ssl_session_timeout 5m;
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
   
   location / {
      if (-f $request_filename/index.html){
	   rewrite (.*) $1/index.html break;
      }
      if (-f $request_filename/index.php){
	   rewrite (.*) $1/index.php;
      }
      if (!-f $request_filename){
	   rewrite (.*) /index.php;
      }  
  }
  rewrite /wp-admin$ $scheme://$host$uri/ permanent;    
       
  
  # PHP 脚本请求全部转发到 FastCGI处理. 使用FastCGI协议默认配置.
  # Fastcgi服务器和程序(PHP,Python)沟通的协议.
  location ~ \.php$ {
      fastcgi_pass   unix:/tmp/php-cgi.sock;
      fastcgi_index  index.php;
      fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
      include        fastcgi_params;
  }
}

server{
   listen  80;
   server_name www.yourdomain.com;
   rewrite ^(.*)$  https://$host$1 permanent;
}

二、java项目

server{
   listen  443;
   server_name www.yourdomain.com;
   ssl on;
   ssl_certificate   /usr/local/nginx/cert/yourproject/213245013822224.pem;
   ssl_certificate_key  /usr/local/nginx/cert/yourproject/213245013822224.key;
   ssl_session_timeout 5m;
   ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
   ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
   ssl_prefer_server_ciphers on;
  
   location / {
      proxy_pass http://localhost:8011;
   }
}

server{
   listen  80;
   server_name www.yourdomain.com;
   rewrite ^(.*)$  https://$host$1 permanent;
}

三、vue项目

1、nginx配置

 location /elementUI/ {
    root /mnt/projects/;
 }

2、项目的路径

/mnt/projects/elementUI
-rw-r--r-- 1 root root 67646 Aug 29 15:02 favicon.ico
-rw-r--r-- 1 root root   808 Aug 29 15:02 index.html
drwxr-xr-x 7 root root  4096 Aug 29 15:02 static

3、vue工程的build参数

assetsPublicPath: '/elementUI/'

四、阿里云https协议申请的简易静态项目

1、nginx的配置

server{
   listen  80;
   server_name yourdomain.com;
   location / {
      root /mnt/projects/yourproject;
   }
}

2、新建目录

/mnt/projects/yourproject/.well-known/pki-validation

在该目录中放入https申请时需要的fileauth.txt,如下图:

nginx典型应用场景_第1张图片

五、重要概念

1、【root】——根路径配置,用于访问文件系统,在匹配到location配置的URL路径后,指向【root】配置的路径,并把location配置路径附加到其后。如:

location /test/ 
{ 
    root /first/second/img/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会返回文件/first/second/img/test/1.jpg。

2、【proxy_pass】——反向代理配置,用于代理请求,适用于前后端负载分离或多台机器、服务器负载分离的场景,在匹配到location配置的URL路径后,转发请求到【proxy_pass】配置的URL,是否会附加location配置路径与【proxy_pass】配置的路径后是否有”/”有关,有”/”则不附加,如:

location /test/ 
{ 
    proxy_pass http://127.0.0.1:8080/; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/1.jpg(未附加/test/路径)。

location /test/ 
{ 
    proxy_pass http://127.0.0.1:8080; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/test/1.jpg(附加/test/路径)。

location /test/ 
{ 
    proxy_pass http://127.0.0.1:8080/img; 
}

即:请求/test/1.jpg(省略了协议与域名),将会被nginx转发请求到http://127.0.0.1:8080/img1.jpg(未附加/test/路径,但附加了/test/之后的路径)。

你可能感兴趣的:(技术分享)