什么是Nginx?

Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。由俄罗斯的程序设计师伊戈尔·西索夫(Igor Sysoev)所开发,官方测试 nginx 能够支支撑 5 万并发链接,并且 cpu、内存等资源消耗却非常低,运行非常稳定。

1.nginx的启动,停止,重新加载,配置文件的命令

1.1启动/重启/停止

sudo /etc/init.d/nginx {start|restart|stop}
上面的命令其实是基于服务的形式,还可以这样写:
sudo service nginx {start|stop|restart|reload|forcereload|status|configtest|rotate|upgrade}

1.2检查配置,同时也是输出配置文件所在位置

/usr/local/nginx/nginx -t
修改配置后重载
/usr/local/nginx/nginx -s reload

1.3 Nginx 安装后只有一个程序文件,本身并不提供各种管理程序,它是使用参数和系统信号机制对 Nginx 进程本身进行控制的。 Nginx 的参数包括有如下几个:

使用:
/usr/local/nginx/sbin/nginx -参数
-c:使用指定的配置文件而不是conf目录下的nginx.conf 。
-t:测试配置文件是否正确,在运行时需要重新加载配置的时候,此命令非常重要,用来检测所修改的配置文件是否有语法错误。
-s:reload 重载
-s:stop 停止

nginx虚拟机如何配置


3.什么是正向代理?什么是反向代理?

正向代理与反向代理区别图解 (nginx)

  1. 背景

经常听到代理,比如通常我们要上国外的网站时,需要买vpn作为跳板机器进行访问。

但是在公司里面也听到了nginx支持反向代理。

那什么是正向代理,什么是反向代理?在网上看了写内容,说一下自己的理解。

  1. 正向代理

正向代理,是在用户端的。比如需要访问某些国外网站,我们可能需要购买vpn。

并且vpn是在我们的用户浏览器端设置的(并不是在远端的服务器设置)。

浏览器先访问vpn地址,vpn地址转发请求,并最后将请求结果原路返回来。

nginx reload 会停止网站服务吗 nginx reload会重启吗_反向代理

  1. 反向代理

有正向代理,就有反向代理。(哈哈,因为起名字的人也会考虑,为什么不叫代理,而是取名"正向"代理)。

反向代理是作用在服务器端的,是一个虚拟ip(VIP)。对于用户的一个请求,会转发到多个后端处理器中的一台来处理该具体请求。

大型网站都有DNS(域名解析服务器),load balance(负载均衡器)等。

nginx reload 会停止网站服务吗 nginx reload会重启吗_redis_02

总结,nginx作为软件能支持反向代理,也就是说nginx可以作为负载均衡器。

4.反向代理如何配置

nginx作为web服务器一个重要的功能就是反向代理。

当然你也可以使用nginx配置正向代理,本是介绍如何配置nginx的反向代理。

nginx反向代理的指令不需要新增额外的模块,默认自带proxy_pass指令,只需要修改配置文件就可以实现反向代理。

配置前的准备工作,后端跑apache服务的ip和端口,也就是说可以通过http://ip:port能访问到你的网站。

然后就可以新建一个redis.conf,加入如下内容,记得修改ip和域名为你的ip和域名。

目录结构如下

├── nginx.conf
└── redis.conf

修改nginx.conf主配置文件,添加 include redis.conf 到http{}段, reload nginx就可以了。

nginx方向代理详解

redis.conf文件如下:

## Basic reverse proxy server ##
## Apache backend for www.redis.com.cn ##
upstream apachephp  {
    server ip:8080; #Apache
}
 
## Start www.redis.com.cn ##
server {
    listen 80;
    server_name  www.redis.com.cn;
 
    access_log  logs/redis.access.log  main;
    error_log  logs/redis.error.log;
    root   html;
    index  index.html index.htm index.php;
 
    ## send request back to apache ##
    location / {
        proxy_pass  http://apachephp;
 
        #Proxy Settings
        proxy_redirect     off;
        proxy_set_header   Host             $host;
        proxy_set_header   X-Real-IP        $remote_addr;
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;
        proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;
        proxy_max_temp_file_size 0;
        proxy_connect_timeout      90;
        proxy_send_timeout         90;
        proxy_read_timeout         90;
        proxy_buffer_size          4k;
        proxy_buffers              4 32k;
        proxy_busy_buffers_size    64k;
        proxy_temp_file_write_size 64k;
   }
}
##End www.redis.com.cn ##

5.nginx的负载均衡如何配置,nginx的负载均衡策略有哪些?

nginx的负载均衡如何配置

5.1nginx的负载均衡策略有哪些

1、轮询(默认,不用在upstream中配置)方式

2、weight(权重)

当指定的服务器的权重参数,权重占比为负载均衡决定的一部分。权重大负载就大。

upstream myapp1 {

       server srv1.example.com weight=3;

       server srv2.example.com;

       server srv3.example.com;

   }

3、ip_hash(访问ip)

每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。但如果这个后端服务器故障之后,分配到别的服务的时候还是有session问题。

upstream favresin{

     ip_hash;

     server 10.0.0.10:8080;

     server 10.0.0.11:8080;

}

4、least_conn(最少连接数)

在一些要求需要更长的时间才能完成的应用情况下, 最少连接可以更公平地控制应用程序实例的负载。使用最少连接负载均衡,nginx不会向负载繁忙的服务器上分发请求,而是将请求分发到负载低的服务器上。

upstream myapp1 {

       least_conn;

       server srv1.example.com;

       server srv2.example.com;

       server srv3.example.com;

   }

5、fair(第三方)

按后端服务器的响应时间来分配请求,响应时间短的优先分配。与weight分配策略类似。

upstream myapp1{    

     server 10.0.0.10:8080;

     server 10.0.0.11:8080;

     fair;

}

6、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例如:http://localhost:18082/systems/index.html#http://localhost:18080/systems/myIndex,nagix会根据url中的hash(http://localhost:18080/systems/myIndex)指派到同一个服务器

upstream your.website.name{  

server 10.0.0.10:8080;

server 10.0.0.11:8080;

hash $request_uri;  

}