当前位置:首页 > 教程 > 正文内容

nginx发送的信息(nginx fair)

2023-04-20 14:30:05教程1

nginx fair

nginx 五种策略

1.轮询(每个请求按照时间顺序分配到不同的服务器,如果后端服务器down掉,就自动剔除了)

2.指定权重(用于性能不均,哪个服务器分配的多些) weight=3

3.ip绑定(每个请求按照ip的hash结果分配,一个访客一个固定后端服务器,解决session缓存的问题)

4.fair (根据服务器响应时间分配请求)

5.url_hash (根据url的hash结果来分配请求,使每个url定向到一个后端服务器,后端服务器为缓存时比较有效)

nginx sbin

1.使用cd /usr/local/nginx/sbin命令进入nginx安装目录的sbin文件夹。

2. 输入启动命令

sbin文件里有个nginx文件,可使用./nginx的命令进行启动。

3. 启动成功

输入启动命令后,若没有出现任何报错信息,则启动成功。

nginx mail

首先你要理解一下个结构的关系:

1、mail server,如sendmail,是用来发送邮件和接收邮件的,即pop和smtp功能。

2、nginx本身是不能发送和接收邮件的,他只是一个中转机构,代理作用。你要做的:1、把后端的mail server配置好,能收发邮件以及管理。2、配置好nginx的代理功能,把邮件的出入都设置一下。确保nginx和mail之间能正常通讯3、把域名pop.abc.com和smtp.abc.com的A记录指向nginx的地址。4、等域名生效后,用foxmail之类发送和收取邮件看看,地址用域名pop和smtp那个。5、其它spf设置也设置一下。希望对你有帮助。

nginx消息转发

nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx来进行内网mysql的访问。

实验环境

nginx1.12.1 : 192.168.1.19

mysql : 192.168.1.20:3306

1:编译或者升级nginx至版本1.9.0以上,编译过程中需带上--with-stream。

# ./configure --prefix=/opt/apps/nginx --with-stream

# make && make install

2:配置stream,定义代理192.168.1.20的3306端口映射为端口2333。

# vi /opt/apps/nginx/conf/nginx.conf

……

……

events {

use epoll;

worker_connections 65535;

}

#stream配置

stream {

server {

listen 2333;

proxy_connect_timeout 1s;

proxy_timeout 3s;

proxy_pass 192.168.1.20:3306;

}

}

http {

……

……

}

3:开启nginx,验证代理是否生效。

image.png

可以看到我们现在可以通过nginx代理的端口访问到内网的mysql服务了。这也直接避免了mysql直接暴露到公网,增加些许的安全。当然,利用stream也可以实现后端服务的负载均衡。

nginx 状态信息

第一种:Nginx自己的错误页面

Nginx访问一个静态的html 页面,当这个页面没有的时候,Nginx抛出404,那么如何返回给客户端404呢?

看下面的配置,这种情况下不需要修改任何参数,就能实现这个功能。

server {

listen 80;

server_name www.test.com;

root /var/www/test;

index index.html index.htm;

location / {

}

# 定义错误页面码,如果出现相应的错误页面码,转发到那里。

error_page 404 403 500 502 503 504 /404.html;

# 承接上面的location。

location = /404.html {

# 放错误页面的目录路径。

root /usr/share/nginx/html;

}

}

第二种:反向代理的错误页面

如果后台Tomcat处理报错抛出404,想把这个状态叫Nginx反馈给客户端或者重定向到某个连接,配置如下:

upstream www {

server 192.168.1.201:7777 weight=20 max_fails=2 fail_timeout=30s;

ip_hash;

}

server {

listen 80;

server_name www.test.com;

root /var/www/test;

index index.html index.htm;

location / {

if ($request_uri ~* ‘^/$’) {

rewrite .* http://www.test.com/index.html redirect;

}

# 关键参数:这个变量开启后,我们才能自定义错误页面,当后端返回404,nginx拦截错误定义错误页面

proxy_intercept_errors on;

proxy_pass http://www;

proxy_set_header HOST $host;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-FOR $proxy_add_x_forwarded_for;

}

error_page 404 /404.html;

location = /404.html {

root /usr/share/nginx/html;

}

}

第三种:Nginx解析php代码的错误页面

如果后端是php解析的,需要加一个变量

在http段中加一个变量

fastcgi_intercept_errors on就可以了。

指定一个错误页面:

error_page 404 /404.html;

location = /404.html {

root /usr/share/nginx/html;

}

指定一个url地址:

error_page 404 /404.html;

error_page 404 = http://www.test.com/error.html;

nginx中sendfile

nginx会影响静态资源服务,nginx如果配置不当就会出现404之类的错误,这其实是访问静态资源文件的方法或者路径不当所致,静态资源服务就是非服务器动态生成的文件,一个客户端需要访问服务器获取静态资源,但是服务器和客户端的物理距离比较远,为了节省网络资源的开销,那么可以在多个地方建立代理,客户端访问的时候,通过CDN服务找到最近的代理就可以了,sendfile,为了提高网络的使用效率,可以设置为on,但是会损失一些实时性。

设置为on,会提高网络中报文传输的实时性。是否压缩。on 表示的时开启压缩。http 的版本。还要考虑是否开启了预读功能。如果开启了预读功能,那么会先去找改文件的压缩文件。但是,这对服务器的磁盘可能会有一定的限制。因为需要存储该文件的压缩文件。

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98788019.html