虚拟主机
搭建网站
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/javascript
application/x-javascript text/css application/xml
text/javascript application/x-httpd-php image/jpeg image/gif
image/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使用的是模块ngx_http_autoindex_module来实现的,该模块处理以斜杠("/")结尾的请求,并生成目录列表。nginx编译的时候会自动加载该模块,但是该模块默认是关闭的,我们需要使用下来指令来完成对应的配置
autoindex
启用或禁用目录列表输出
语法 | autoindex on|off; |
默认值 | autoindex off; |
位置 | http、server、location |
autoindex_exact_size
对应HTLM格式,指定是否在目录列表展示文件的详细大小
默认为on,显示出文件的确切大小,单位是bytes。 改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
语法 | autoindex_exact_size on|off; |
默认值 | autoindex_exact_size on; |
位置 | http、server、location |
autoindex_format
设置目录列表的格式
语法 | autoindex_format html|xml|json|jsonp; |
默认值 | autoindex_format html; |
位置 | http、server、location |
注意:该指令在1.7.9及以后版本中出现
autoindex_localtime
对应HTML格式,是否在目录列表上显示时间。
默认为off,显示的文件时间为GMT时间。 改为on后,显示的文件时间为文件的服务器时间
语法 | autoindex_localtime on | off; |
默认值 | autoindex_localtime off; |
位置 | http、server、location |
配置方式如下
location /download{
root /usr/local;
autoindex on;
autoindex_exact_size on;
autoindex_format html;
autoindex_localtime on;
}
修改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 {
#监听的端口和ip
listen 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多虚拟主机
#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/javascript
application/x-javascript text/css application/xml
text/javascript application/x-httpd-php image/jpeg image/gif
image/png;
#第一个虚拟主机
server {
#监听的端⼝和ip
listen 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.htm
index 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,配置域名。
#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/javascript
application/x-javascript text/css application/xml
text/javascript application/x-httpd-php image/jpeg image/gif
image/png;
#第一个虚拟主机
server {
#监听的端?和ip
listen 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.htm
index 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
基于端口多虚拟机
修改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/javascript
application/x-javascript text/css application/xml
text/javascript application/x-httpd-php image/jpeg image/gif
image/png;
#第一个虚拟主机
server {
#监听的端口和ip
listen 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.htm
index 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目录