Nginx 是一个异步框架的 Web 服务器,也可以用作反向代理,负载平衡器 和 HTTP 缓存。
yum install gcc-c++
yum install -y pcre pcre-devel
yum install -y zlib zlib-devel
yum install -y openssl openssl-devel
下载源代码包:
wget http://nginx.org/download/nginx-1.18.0.tar.gz
Nginx官网下载地址:http://nginx.org/en/download.html
解压并安装 Nginx:
# tar -xvf nginx-1.18.0.tar.gz
# cd nginx-1.18.0
# ./configure
# make
# make install
vi /usr/local/nginx/conf/nginx.conf
/usr/local/nginx/sbin/nginx -s reload
如果报 [error] open() "/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
错误,则执行 /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf 命令后再次启动运行 Nginx。
查看 Nginx 启动状态
ps -ef | grep nginx
注意:外部访问时要关闭防火墙。
访问 IP 地址:
Nginx 相关命令:
./nginx -s reload # 重新载入配置文件
./nginx -s reopen # 重启 Nginx
./nginx -s stop # 停止 Nginx
./nginx -s quit # 关闭 Nginx
反向代理你可以理解为:
网络上我重拳出击,现实中我唯唯诺诺。 ——键仙
你并不知道键仙的真实姓名,位置,年龄或任何东西,拥有很好的隐秘性。
反向代理也是如此。尽管可以访问服务器,但它不是真正的服务器。服务器的反向代理成功隐藏了真实的服务器地址。
Nginx 实现非常简单,只需要添加:
proxy_pass http://xxxxxxxxxx;
server {
listen 80;
server_name localhost;
location / {
proxy_pass http://180.101.49.11;
index index.html index.htm index.jsp;
}
}
其中,http://180.101.49.11
是百度的 ip 地址,重新载入配置文件并重启后,访问 http://服务器ip地址
,会自动返回百度数据。
location:
配置请求的路由,以及各种页面的处理情况。
server {
......
......
......
location ~*^.+$ {
#root html; #根目录
#index index.html index.htm; #设置默认页
proxy_pass http://xxxxxxxx; #请求转向xxxxxxxx 定义的服务器列表
deny 127.0.0.1; #拒绝的ip
allow 172.18.5.54; #允许的ip
}
}
location 第一行是一个正则,对请求的url过滤,正则匹配,~ 为区分大小写,~* 为不区分大小写。
每一行都有注释,我们举个例子来巩固下。
server {
listen 9999;
server_name localhost;
location / {
root html;
index index2.html index2.htm;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
这里我们写了两个 location,第一个 location 代表:当我们访问 http://localhost:9999
会自动拼接 url ,最终访问 url 为:http://localhost:9999/html/index2.html.
error_page 代表错误处理:当出现 500 502 503 504 时,请求就变为了 http://localhost:9999/50x.html
第二个location 对 /50x.html 进行了拦截过滤,拼接 url 后就变为了 http://localhost:9999/html/50x.html
Nginx 负载平衡主要通过配置:upstream mysvr
假如,我们有两台服务器,某天,其中一台服务器突然挂掉了,那么我们就需要启动备用服务器。
upstream mysvr {
server 192.168.0.11:1111;
server 192.168.0.22:2222 backup; #备用
}
再后来,我们又购置了一台服务器,要求它分担正在运行服务器的压力:(平均分配)
upstream mysvr {
server 192.168.0.11:1111;
server 192.168.0.33:3333;
server 192.168.0.22:2222 backup; #备用
}
又过了一阵,突然发现网上某台服务器打折扣,而且配置性能时原来单个服务器性能的 2 倍,我们马上购置了一台。
既然配置高,那我们就可以让它多做点事情。
添加权重:
upstream mysvr {
server 192.168.0.11:1111 weight=1;
server 192.168.0.33:3333 weight=1;
server 192.168.0.55:5555 weight=2;
server 192.168.0.22:2222 backup; #备用
}
执行顺序就变成了:
192.168.0.11:1111;
192.168.0.33:3333;
192.168.0.55:5555;
192.168.0.55:5555;
192.168.0.11:1111;
192.168.0.33:3333;
192.168.0.55:5555;
192.168.0.55:5555;
location / {
add_header Access-Control-Allow-Origin * always;
add_header Access-Control-Allow-Headers "kbn-xsrf,Content-Type";
add_header Access-Control-Allow-Methods "GET, POST, PUT, OPTIONS";
if ( $request_method = 'OPTIONS' ) {
return 200;
}
proxy_pass http://192.168.1.155:5601;
root html;
index index.html index.htm;
}