Nginx的基本部署

158 阅读3分钟

1.nginx中间件

架构:没有什么是加一层解决不了的问题

2.什么是nginx

高性能的http和反向代理服务器

优点:轻量,节约宽带资源

3.nginx作用

正向代理:代理客户端的

反向代理是代理服务器端的

nginx负载均衡有两种:内置策略和扩展策略,

内置策略为轮询

轮询:就是对每一台服务器轮流请求

加权轮询就是给某台服务器加权重,使每次请求,请求的可能较大

扩展策略:非常灵活

iphash是对客户端请求的ip进行hash操作,然后根据hash结果将同一个客户端ip的请求分发给同一台服务器进行处理,可以解决session不共享的问题

动态分离,有些请求需要后台处理,有些请求不需要(css,html)这些不需要经过后台处理的文件为静态文件,根据静态资源的特点做缓存操作,提高响应速度

nnginx的常用命令

  • taskkill 用来终止进程
  • /f 强制终止
  • /t 终止指定的进程和任何由此启动的子应用
  • /im 指定的进程名称
  • ./nginx 启动
  • ./nginx -s stop 停止
  • ./nginx -s quit 安全退出
  • ./nginx -s reload 重新加载配置文件
  • ps aux|grep nginx 查看nginx进程

image.png

4.nginx实战

root与alias区别与访问路径 alias 实际访问文件路径不会拼接URL中的路径 root 实际访问文件路径会拼接URL中的路径 示例如下:

alias

location ^~ /sta/ {  
   alias /usr/local/nginx/html/static/;  
请求:http://test.com/sta/sta1.html
实际访问:/usr/local/nginx/html/static/sta1.html 文件
root
​
location ^~ /tea/ {  
   root /usr/local/nginx/html/;  
}

ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器,可以解决session问题

#配置负载均衡的服务器和端口
upstream myserver { 
    server 192.168.80.102:8081;
    server 192.168.80.102:8082;
    ip_hash;
}
server {  
    listen       80;  
    location / {
    proxy_pass http://myserver; 
   }
}

我们来看一下下面这段代码,作用是在访问域名www.abc.com时,通过Nginx代理到了内网中的127.0.0.10这台服务器的8080端口上,配置时使用的是 / 表示该域名下的所有访问都会指向这里

server {
    listen  80;
    server_name www.abc.com;
    index index.html index.htm index.php;
    access_log /var/log/nginx/99cdtop.access.log  main;
    access_log on;
    location / {
        proxy_redirect off ;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        proxy_buffer_size 1600k;
        proxy_buffers 4 3200k;
        proxy_busy_buffers_size 6400k;
        proxy_temp_file_write_size 6400k;
        proxy_max_temp_file_size 128m;
        proxy_pass      http://127.0.0.10:8080;
    }
}
​

特别说明: (1)proxy_set_header相关参数的设置,是为了把所有访问的真实主机信息、IP信息传送给代理服务器,不然对方接收到的全是Nginx服务器的信息,这样对于交互性比较强的网站来说是致命的。 (2)如果访问不同的域名或不同的服务器,最好设置不同的日志文件,这样便于查错,如果不使用则是使用Nginx统一的日志,这样查起来太麻烦。 这一部分下面的配置中将省略!

5、使用upstream方法代理

这个方法主要是方便把单独的代理存储为独立的文件进行区分和设置,可以更好地进行多个服务器的代理设置,包括每个子服务器的权重,以及分发的方式等 这里注意两点: (1)upstream后面是你当前配置的名称,在后面的proxy_pass参数中要对应 (2)ip_hash表示负载均衡配置,ip_hash的设置可以使每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题,备选为url_hash,指按用户的访问URL来进行分配,这样访问相同的URL时会指向同一台服务器,主要用于下载站点之类的,可以节略带宽资源。

upstream abc {
    ip_hash;
    server  127.0.0.10:8080  weight=6;
    server  127.0.0.11:8080  weight=4;
    server  127.0.0.12:8080  down;
}
server {
    listen  80;
    server_name www.99cd.top 99cd.top;
    index index.html index.htm index.php;
    location / {
        proxy_redirect off ;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header REMOTE-HOST $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_connect_timeout 600;
        proxy_send_timeout 600;
        proxy_read_timeout 600;
        proxy_buffer_size 1600k;
        proxy_buffers 4 3200k;
        proxy_busy_buffers_size 6400k;
        proxy_temp_file_write_size 6400k;
        proxy_max_temp_file_size 128m;
        proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
        proxy_pass  http://abc;
    }
}

\