大家好,如果您还对nginx服务器不太了解,没有关系,今天就由本站为大家分享nginx服务器的知识,包括nginx服务器有什么作用以及什么是反向代理的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
一、nginx是什么 nginx是什么
nginx是一款使用c语言开发的高*能的HTTP和反向代理web服务器,具有IMAP/POP3/SMTP的服务。Nginx是异步框架的网页服务器,能用作反向代理、负载平衡器和 HTTP缓存。
nginx,是俄罗斯的程序设计师伊戈尔·赛索耶夫所开发的,nginx是免费的开源软件,根据类 BSD许可证的条款发布。根据官方测试,nginx能够支撑5万并发,并且cpu、内存等资源消耗非常低,运行非常稳定。
nginx,它的特点是占有内存少,并发能力强。它的并发能力在同类型的网页服务器中表现也是较好的。在中国大陆,使用nginx网站用户有:百度、腾讯、淘宝、京东、新浪、网易等。
二、nginx服务器有什么作用以及什么是反向代理
一:Nginx作为正向代理服务器:
1.正向代理:代理(proxy)服务也可以称为是正向代理,指的是将服务器部署在公司的网关,代理公司内部员工上外网的请求,可以起到一定的安全作用和管理限制作用,正向代理不支持从外网向内网访问资源,一般很少用,经本人测试,效果也不好,有很多页面打不开,在百度搜索的页面也无法返回。
server{
server_name localhost;
resolver 202.106.0.20 8.8.8.8;#只能有一个resolve,但是可以用空格隔开,继续写下一个
resolver_timeout 5s;
listen 8080;
location/{
proxy_pass$scheme://$_host/$request_uri; proxy_set_header Host$_host;
proxy_buffers 256 4k;
proxy_max_temp_file_size 0;
proxy_connect_timeout 30;
proxy_cache_valid 200 302 10m;
proxy_cache_valid 301 1h;
proxy_cache_valid any 1m;
}
}
2.错误码502:Nginx作为代理服务器向后端转发请求过程中超时。
二:Nginx作为反向代理服务器:
反向代理:反向代理也叫reverse proxy,指的是代理外网用户的请求到内部的指定web服务器,并将数据返回给用户的一种方式,这是用的比较多的一种方式。
反向代理的常用指令:
1.proxy_pass:用来设置将请求转发给的后端服务器的主机,可以是主机名、IP:端口的方式,也可以代理到通过upstream设置的主机组,如下:
upstream webserver{
#ip_hash;
server 192.168.0.201 weight=1 max_fails=2 fail_timeout=2;
server 192.168.0.202 weight=1 max_fails=2 fail_timeout=2;
server 127.0.0.1:9008 backup;
}
server{
server_name hfnginx.chinacloud.;
#aess_log logs/host.aess.log main;
location/{#静态网页在本机
root html;
index index.html;
}
location~* ^/form{#指定目录在后端服务器
proxy_pass 此处后面不能加/,如果加了会提示语法错误
proxy_set_header X-Real-IP$remote_addr;
}
}
2:proxy_hide_header:用于nginx服务器作为反向代理的时候,在返回给客户端响应的时候,隐藏后端服务版本(如php版本)的信息,可以设置在/server或location块,如下:
Nginx会将上游服务器的响应转发给客户端,但默认不会转发以下HTTP头部字段:Date、Server、X-Pad和X-Ael-*。使用proxy_hide_header后可以任意地指定哪些HTTP头部字段不能被转发。例如:
proxy_hide_header Cache-Control;
proxy_hide_header MicrosoftOfficeWebServer;
注:如果是nginx作为web服务器,要隐藏版本信息的话,使用fastcgi_hide_header:
3:proxy_pass_header:与proxy_hide_header功能相反,proxy_pass_header会将原来禁止转发的header设置为允许转发,可以设置在/server或location块例如:
proxy_pass_headerX-Ael-Redirect;
4:proxy_pass_request_body:是否向后端服务器发送HTTP包体部分,可以设置在/server或location块,如下:
proxy_pass_request_body on|off;#默认为on
5:proxy_pass_request_headers:是否将客户端的请求头部转发给后端服务器,可以设置在/server或location块,如下:
proxy_pass_request_headers on| off;#默认为on
6:proxy_set_header:可以更改或添加客户端的请求头部信息内容,并转发之后端服务器,比如在后端服务器想要获取客户端的真实IP的时候,就要更改每一个报文的头部,如下:
proxy_set_header HOST$remote_addr;#添加HOST到报文头部,其值为客户端的公网IP
7:proxy_set_body:更改nginx服务器接收到的客户端请求的请求内容,然后将修改后的请求转发给后端的服务器,用法如下:
proxy_set_body value;#其中value为要修改的目标内容,可以是变量、文本或者变量的组合。
8:proxy_ip:Nginx 0.8.22版本及以上支持此功能,用于Nginx配置了多个基于域名或IP的主机的情况下,可以指定代理连接到特定的主机处理,就是强制将客户端请求绑定到指定的IP:
proxy_bind x.x.x.x;
9:proxy_connect_timeout:配置nginx服务器与后端服务器尝试建立连接的超时时间,默认为60秒,用法如下:
proxy_connect_timeout 10s;#10s为自定义nginx与后端服务器建立连接的超时时间
10:proxy_read_time:配置nginx服务器向后端服务器或服务器组发起read请求后,等待的超时时间:
proxy_read_time 10s;#默认为60秒
11:proxy_send_time;配置nginx项后端服务器或服务器组发起write请求后,等待的超时时间:
proxy_send_time 10s;#默认为60s
12:proxy__version:用于设置nginx提供代理服务的HTTP协议的版本:
proxy__version 1.0|1.1;
13:proxy_method:设置nginx服务器请求后端服务器时使用的方法,一般为POST或者GET,客户端的请求方法将被忽略:
proxy_method GET|PUT;
14:proxy_ignore_client_abort:设置在客户端网络中断请求时,nginx服务器是否中断对被代理服务器的请求:
proxy_ignore_client_abort off|on;#默认为off,当客户端网络中断请求时,nginx服务器中断其对后端服务器的请求。
15:proxy_ignore_headers:设置nginx不处理后端服务器返回的数据中包含某些指定字段的报文,可以指定的有:”X-Ael-Redirect”,“X-Ael-Expires”,“Expires”或”Cache-Control”:
proxy_ignore_headers Expires;
16:proxy_redirect:修改后端服务器返回的响应头部中的location货refresh,与proxy_pass配合使用:
17:proxy_intercept_errors:设置nginx服务器返回客户端的错误状态,当后端服务器返回大于等于的错误码的是,如果本功能是打开的,则nginx服务器返回自定义的错误页面(使用error page定义的),如果没有开启就将后端服务器返回的HTTP状态返回给客户端,默认为关闭:
proxy_intercept_errors on| off;
18:proxy_headers_hash_max_size:设置nginx保存HTTP报文头的hash表的上限,默认为512字节:
proxy_headers_hash_bucket_size 512;#申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节
proxy_headers_hash_max_size 512;#上限
server_names_hash_max_szie 512;#设置服务器名称的上限
server_namse_hash_bucket_size 512;#申请空间大小
19:proxy_headers_hash_bucket_size:#申请nginx保存HTTP报文头的hash表的空间大小,默认为64个字节
proxy_headers_hash_bucket_size 512;#默认为64字节
20:proxy__upstream:当使用了upstream的时候,可以定义在发生了特定的情况下将请求依次交给下一个组内的服务器处理,状态包括:
proxy_next_upstream _404 _502;//让404报错进入max_fails计数 upstream online{
sticky;
server 172.28.70.161:8080 max_fails=0 fail_timeout=3s;
server 172.28.70.163:8080 max_fails=0 fail_timeout=3s;
check interval=3000 rise=2 fall=1 timeout=1000 type=;
check__send"GET/ HTTP/1.0\r\n\r\n";
check__expect_alive _2xx _3xx;
}
upstream backup{
server 172.28.22.29:7777 max_fails=0 fail_timeout=3s;
}
21:proxy_ssl_session_reuse:配置是否基于SSL协议与后端服务器建立连接,如下:
proxy_ssl_session_reuse on| off;
三、nginx如何配置web服务器
Nginx是一款开源、免费的Web服务器,同时具备反向代理、HTTP负载均衡、HTTP缓存及邮件代理功能,适用于所有类Unix操作系统。本篇文章将指导您在Ubuntu 22.04 LTS上安装Nginx Web服务器。
安装Nginx服务器前,确保系统已安装其依赖项。打开终端,运行以下APT命令:
为了启动并启用Nginx服务,请执行以下操作:
通过以下命令检查Nginx服务状态:
完成上述更改后,访问Nginx欢迎页面:
或者在浏览器中输入:
确认Nginx Web服务器已成功安装,接下来将探讨Nginx服务器的配置。
在Nginx中,多个网站可以通过Server Block或虚拟主机实现。默认情况下,Nginx会有一个Server Block,下面将为您演示如何自定义Server Block。
假设您要为Web服务器创建一个自定义Server Block。首先,在Web服务器的文档根目录下创建index.html文件。
在/etc/nginx/sites-*ailable目录下创建名为linuxtechi.lan的配置文件,并添加以下内容:
激活创建的Server Block,创建指向/etc/nginx/sites-enabled/linuxtechi.lan的软。
重启Nginx服务:
如果系统未配置DNS服务器,为客户端机器的hosts文件添加以下条目:
访问Web服务器: linuxtechi.lan
为了提高安全*,需要为Nginx Web服务器启用SSL证书。可以使用受信任来源的证书或通过openssl命令生成自签名证书。本篇将使用openssl命令为服务器生成自签名证书。
编辑配置文件,添加密钥和证书位置,并将Web服务器端口从80更改为443。
保存并退出文件后,重启Nginx服务。
使用s协议访问Web服务器: linuxtechi.lan
注意:首次访问时,需高级并接受风险后继续访问。
至此,我们已成功在Nginx Web服务器上启用自签名证书。