2025-11-20 00:11:45 德国世界杯预选赛

Nginx 教程(详细)

Nginx 教程(详细)

文章目录

Nginx 教程(详细)1:简介2:安装2.1:安装gcc环境2.2:安装pcre2.3:安装zlib2.4:安装openssl2.5:安装Nginx2.6:修改配置文件 nginx.conf

3:运行4:反向代理4.1:location块

5:负载平衡6:解决跨域问题

1:简介

Nginx 是一个异步框架的 Web 服务器,也可以用作反向代理,负载平衡器 和 HTTP 缓存。

2:安装

2.1:安装gcc环境

yum install gcc-c++

2.2:安装pcre

yum install -y pcre pcre-devel

2.3:安装zlib

yum install -y zlib zlib-devel

2.4:安装openssl

yum install -y openssl openssl-devel

2.5:安装Nginx

下载源代码包:

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

2.6:修改配置文件 nginx.conf

vi /usr/local/nginx/conf/nginx.conf

3:运行

/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

4:反向代理

反向代理你可以理解为:

网络上我重拳出击,现实中我唯唯诺诺。 ——键仙

你并不知道键仙的真实姓名,位置,年龄或任何东西,拥有很好的隐秘性。

反向代理也是如此。尽管可以访问服务器,但它不是真正的服务器。服务器的反向代理成功隐藏了真实的服务器地址。

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地址,会自动返回百度数据。

4.1:location块

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

5:负载平衡

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;

6:解决跨域问题

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;

}

iPhone 墙纸设置中的“静止”和“透视”有什么区别?
关于电信公网IP的问题
top