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/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.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多虚拟主机

修改 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 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,配置域名。 

修改 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 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/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

文章来源地址https://uudwc.com/A/EvkRY

原文地址:https://blog.csdn.net/qq_63431773/article/details/133241326

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

h
上一篇 2023年09月24日 18:53
下一篇 2023年09月24日 18:57