当前位置: 首页 > news >正文

Nginx实战

虚拟主机

虚拟主机指的就是⼀个独⽴的站点,具有独⽴的域名,有完整的www服务,例如⽹站、FTP、邮件等 。Nginx⽀持多虚拟主机,在⼀台机器上可以运⾏完全独⽴的多个站点。⼀些草根流量站⻓,常会搭建个⼈站点进⾏资源分享交流,并且可能有多个不同业务的站点,如果每台服务器只运⾏⼀个⽹站,那么将造成资源浪费,成本浪费。利⽤虚拟主机的功能,就不⽤为了运⾏⼀个⽹站⽽单独配置⼀个Nginx服务器,或是单独再运⾏⼀组Nginx进程。虚拟主机可以在⼀台服务器,同⼀个Nginx进程上运⾏多个⽹站。

搭建网站

搭建一个静态网站,修改nginx.conf,⾃上⽽下找到第⼀个server{}指令块, 修改如下
 server {listen 80;server_name localhost;#默认编码charset utf-8;# access_log logs/host.access.log  main;location / {#定义虚拟主机的资源目录,无论win或linux都要写成正斜杠root C:/Users/zhang/Desktop/new;#定义首页文件的名字index index.html index.htm;}}

执行命令 

// 检查配置是否正确
nginx -t
// 启动
nginx
// 重新加载Nginx配置文件
nginx -s reload

准备资源

访问localhost

访问静态资源

 

 nginx⽀持gzip对资源压缩传输,经过gzip压缩后的⻚⾯⼤⼩可以为原本的30%甚⾄更⼩,⽤户浏览体验会快很多


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;// 开启压缩gzip on;gzip_http_version 1.1;gzip_comp_level 4;gzip_types text/plain application/javascriptapplication/x-javascript text/css application/xmltext/javascript application/x-httpd-php image/jpeg image/gifimage/png;server {listen 80;server_name localhost;#默认编码charset utf-8;# access_log logs/host.access.log  main;location / {#定义虚拟主机的资源目录,无论win或linux都要写成正斜杠root C:/Users/zhang/Desktop/new;#定义首页文件的名字index index.html index.htm;}}}

目录游览功能

修改nginx.conf支持游览目录


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;# gzip on;#第一个虚拟主机server {#监听的端口和iplisten 80;#主机域名server_name www.test1.com;charset utf-8;access_log logs/host.access.log;#url匹配location / {#HTML文件存放的目录root C:/Users/zhang/Desktop/new/web2;#开启目录索引功能autoindex on;#关闭详细文件大小统计,让文件大小显示MB,GB单位,默认为b; autoindex_exact_size off;#开启以服务器本地时区显示文件修改日期!  autoindex_localtime on;        }}}

 访问

基于IP多虚拟主机

修改 nginx.conf ⽀持多虚拟主机

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;gzip on;gzip_http_version 1.1;gzip_comp_level 4;gzip_types text/plain application/javascriptapplication/x-javascript text/css application/xmltext/javascript application/x-httpd-php image/jpeg image/gifimage/png;#第一个虚拟主机server {#监听的端⼝和iplisten 127.0.0.1:80;#主机域名server_name 127.0.0.1;charset utf-8;access_log logs/host.access.log;#url匹配location / {#HTML文件存放的目录root C:/Users/zhang/Desktop/new/web1;#默认首页文件,从左往右寻找,index.html或是index.htmindex index.html index.htm;}}#第二个虚拟主机server {listen 192.168.52.100:80;server_name 192.168.52.100;location / {index index.html index.htm;root C:/Users/zhang/Desktop/new/web2;}}
}

执行命令

#重载nginx
nginx -s reload

访问站点一

访问站点二

基于域名多虚拟主机

 基于多IP的虚拟主机可能会造成IP地址不⾜的问题,如果没有特殊需求,更常⽤的是基于多域名的形式。只需要你单独配置DNS服务器,将主机名对应到正确的IP地址,修改Nginx配置,可以识别到不同的主机即可,这样就可以使得多个虚拟主机⽤同⼀个IP,解决了IP不足的隐患。

打开C:\Windows\System32\drivers\etc,配置域名。 

修改 nginx.conf ⽀持多域名的虚拟主机

#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;gzip on;gzip_http_version 1.1;gzip_comp_level 4;gzip_types text/plain application/javascriptapplication/x-javascript text/css application/xmltext/javascript application/x-httpd-php image/jpeg image/gifimage/png;#第一个虚拟主机server {#监听的端?和iplisten 80;#主机域名server_name www.test1.com;charset utf-8;access_log logs/host.access.log;#url匹配location / {#HTML文件存放的目录root C:/Users/zhang/Desktop/new/web1;#默认首页文件,从左往右寻找,index.html或是index.htmindex index.html index.htm;}}#第二个虚拟主机server {listen 80;server_name www.test2.com;location / {index index.html index.htm;root C:/Users/zhang/Desktop/new/web2;}}
}

执行命令

#重载nginx
nginx -s reload

访问域名1

访问域名2

基于端口多虚拟机

基于端⼝的配置在⽣产环境⽐较少⻅,⽤于特殊场景,例如公司内部测试平台⽹站,使⽤特殊端⼝的后台,OA 系统、⽹站后台, CRM 后台等。

修改nginx.conf⽀持多域名的虚拟主机


#user  nobody;
worker_processes  1;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log  main;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;gzip on;gzip_http_version 1.1;gzip_comp_level 4;gzip_types text/plain application/javascriptapplication/x-javascript text/css application/xmltext/javascript application/x-httpd-php image/jpeg image/gifimage/png;#第一个虚拟主机server {#监听的端口和iplisten 80;#主机域名server_name www.test1.com;charset utf-8;access_log logs/host.access.log;#url匹配location / {#HTML文件存放的目录root C:/Users/zhang/Desktop/new/web1;#默认首页文件,从左往右寻找,index.html或是index.htmindex index.html index.htm;}}#第二个虚拟主机server {listen 81;server_name www.test1.com;location / {index index.html index.htm;root C:/Users/zhang/Desktop/new/web2;}}
}

执行命令

#重载nginx
nginx -s reload

访问端口80

访问端口81

root和alias区别

1. Nginx的配置文件server中指定两个location执行,分别为root和alias的指令

location /test/{alias /www/test/;
}

按照上述配置,则访问/test/目录里面的文件时,nginx会去/www/test目录找文件

location /test/{root /www/test;
}

按照上述配置,则访问/test/目录下的文件时,nginx会去/www/test/test/目录下找文件

2.alias是一个目录别名的定义,root则是最上层目录的定义。

3,另一个区别是alias后面必须要用"/"结束,否则会找不到文件,而root则对"/"可有可无

4.不少人都有误区,认为root是指的/www/test目录下,但是应该是/www/test/test目录

http://www.lryc.cn/news/174494.html

相关文章:

  • day-57 代码随想录算法训练营(19)动态规划 part 17
  • 在项目中,关于前端实现数据可视化的技术选择
  • DT 卡通材质学习 一
  • 【游戏引擎架构】6.2 资源管理器
  • spring的ThreadPoolTaskExecutor装饰器传递调用线程信息给线程池中的线程
  • 转载 - 洞察问题本质,解决工作难题
  • 关于计算机找不到d3dx9_43.dll,无法继续执行代码修复方法
  • 《从零开始的Java世界》01基本程序设计
  • 【数据开发】数据全栈知识架构,数据(平台、开发、管理、分析)
  • 基于STM32的宠物托运智能控制系统的设计(第十七届研电赛)
  • 数据结构的奇妙世界:实用算法与实际应用
  • uniapp实现表格冻结
  • Spring面试题11:什么是Spring的依赖注入
  • 用于设计 CNN 的 7 种不同卷积
  • 备受以太坊基金会青睐的 Hexlink,构建亿级用户涌入 Web3的入口
  • 合约升级标准 ERC2535 的设计解析和不足
  • 【Vue】ElementUI实现登录注册
  • linux 安装 wordpress
  • LeetCode902最大为 N 的数字组合(相关话题:数位DP问题,递归遍历和减枝)
  • USB总线-Linux内核USB3.0主机控制器驱动框架分析(十二)
  • SQL模板-用户留存率计算
  • LeakCanary 源码详解(3)
  • springboot使用SSE
  • 搞定ESD(一):静电放电测试标准解析
  • 问界M7的诸多优点(自动驾驶走进我们的生活二)
  • [运维|数据库] msql中的 FIND_IN_SET如何转化为pg数据中的ARRAY_POSITION的函数
  • LeetCode 面试题 05.03. 翻转数位
  • Fiddler抓包工具配置+Jmeter基本使用
  • IOTE 2023国际物联网展直击:芯与物发布全新定位芯片,助力多领域智能化发展
  • 【软件设计师-从小白到大牛】上午题基础篇:第二章 操作系统