您当前的位置:首页 > 计算机 > 服务器 > Nginx

Nginx的常用方法与技巧---附实例

时间:05-18来源:作者:点击数:

概述

  • Nginx 是一款轻量级的Web 服务器/反向代理服务器电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。

安装

Docker安装

  • 拉取镜像
docker pull nginx
  • 先运行一次容器拷贝配置文件到本地
docker run -p 80:80 --name nginx -d nginx

docker container cp nginx:/etc/nginx /etc/nginx/
docker stop nginx
docker rm nginx
  • 重新运行容器
docker run -p 80:80 --name nginx \
-v /etc/nginx/html:/usr/share/nginx/html \
-v /etc/nginx/logs:/var/log/nginx  \
-v /etc/nginx/conf:/etc/nginx \
-d nginx

本地安装(ubuntu)

  • 下载nginx
sudo su root
apt-get install nginx
  • 启动nginx
service nginx start
  • nginx安装完成之后的文件位置:
    • /usr/sbin/nginx:主程序
    • /etc/nginx:存放配置文件
    • /usr/share/nginx:存放静态文件
    • /var/log/nginx:存放日志

正向代理

正向代理(forward proxy):是一个位于客户端和目标服务器之间的服务器(代理服务器),为了从目标服务器取得内容,客户端向代理服务器发送一个请求并指定目标,然后代理服务器向目标服务器转交请求并将获得的内容返回给客户端。

反向代理

反向代理(reverse proxy):是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

静态代理

server {
    listen       80;
    server_name  localhost; 

    location / {
        root /home/asa/wms-app-public;
        index index.html index.htm;
    }
}

动态代理

server {
    listen       80;
    server_name  localhost; #修改域名

    location / { 
		proxy_pass http://192.168.0.126:8080; #修改为代理服务地址
	}
}

按目录划分项目

http {
	……

	server {
		listen       80;
		server_name  localhost;

		location /www/ {
			root	/data/;
			index	index.html index.htm;
		}
		
		location /image/ {
			root	/data/;
			autoindex	on; // 列出访问目录
		}
	}
}
  • 当请求是以 /www/开始的,则进入/data/www/目录下找资源。如果是以/image/开始的,则进入 /data/image/ 目录下找资源,同时该路径下配置了一个autoindex on,当访问/image/目录时,会列出该目录下的所有文件。
  • 注意alias和root指令的区别,root不会将location配置的路径去掉,而alias会将location配置的路径去掉。

负载均衡

负载均衡:把大量的请求按照我们指定的方式均衡的分配给集群中的每台服务器,从而不会产生集群中大量请求只请求某一台服务器,从而使该服务器宕机的情况。

示例

  • 把www.domain.com均衡到本机不同的端口,也可以改为均衡到不同的地址上
http {
  upstream myproject {
  server 127.0.0.1:8000 weight=3;
  server 127.0.0.1:8001;
  server 127.0.0.1:8002;
  server 127.0.0.1:8003;
 }

#该服务器接受到端口80的所有流量并将其传递给上游upstream 。
#请注意,upstream名称和proxy_pass需要匹配。
server {
  listen 80;
  server_name www.domain.com;
  location / {
    proxy_pass http://myproject;
  }
 }
}

负载均衡调度算法

  • weight轮询(默认):接收到的请求按照顺序逐一分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
  • ip_hash:每个请求按照发起客户端的ip的hash结果进行匹配,这样的算法下一个固定ip地址的客户端总会访问到同一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
  • fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块
  • url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在nginx作为静态服务器的情况下提高缓存效率。同样要注意nginx默认不支持这种调度算法,要使用的话需要安装nginx的hash软件包

地址重写

  • 网站更换了域名,但还有用户在使用老的域名访问,这时可以通过nginx的地址重写来让用户跳转到新的域名进行访问。
  • 比如说原来我们用的docs.test.com这个域名不用了,现在改成www.test.com来访问项目;
server {
    listen       80;
    server_name  docs.test.com; 
    
    rewrite "^/(.*)$" http://www.test.com/$1; #地址重写到新地址

    location / {
        root   /usr/share/nginx/html/docs; 
        index  index.html index.htm;
    }

    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

}

  • 此时访问旧域名docs.test.com会直接跳转到www.test.com去。

Nginx常用命令

  • start nginx启动nginx
  • nginx -s stop快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。
  • nginx -s quit平稳关闭Nginx,保存相关信息,有安排的结束web服务。
  • nginx -s reload因改变了Nginx相关配置,需要重新加载配置而重载。
  • nginx -s reopen重新打开日志文件。
  • nginx -c filename为 Nginx 指定一个配置文件,来代替缺省的。
  • nginx -t不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文 件。
  • nginx -v显示 nginx 的版本。
  • nginx -V显示 nginx 的版本,编译器版本和配置参数
  • 后续遇到其它好玩的,好用的在陆续补充吧…
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门