我们在学习Nginx时也采用同样的方式,先来看看Nginx的竞争对手——Apache、Lighttpd、Tomcat、Jetty、IIS,它们都是Web服务器,或者叫做WWW(World Wide Web)服务器,相应地也都具备Web服务器的基本功能:基于REST架构风格 [1] ,以统一资源描述符(Uniform Resource Identifier,URI)或者统一资源定位符(Uniform Resource Locator,URL)作为沟通依据,通过HTTP为浏览器等客户端程序提供各种网络服务。
Tomcat和Jetty面向Java语言,先天就是重量级的Web服务器,它的性能与Nginx没有可比性。
Apache有许多优点,如稳定、开源、跨平台等,但它出现的时间太长了,在它兴起的年代,互联网的产业规模远远比不上今天,所以它被设计成了一个重量级的、不支持高并发的Web服务器。
下载适合您的版本
以下是做测试用的版本
# wget http://nginx.org/download/nginx-1.15.5.tar.gz
如果您的主机上没有wget命令请安装
Centos RedHat 版本:
# sudo yum -y install wget
ubuntu Depin系列:
# sudo apt install wget
# mkdir /usr/local/nginx
# mv nginx-1.15.5.tar.gz /usr/local/nginx/
# cd /usr/local/nginx/
# tar xf nginx-1.15.5.tar.gz
# cd nginx-1.15.5
# yum -y install gcc gcc-c++ pcre-devel zlib-devel
# ./configure --prefix=/usr/local/nginx/
# make && make install
/usr/local/nginx/sbin/nginx
选项
nginx -s stop|quit|raload|reopen
解释
stop — fast shutdown # 快速关机
quit — graceful shutdown # 优雅关机
reload — reloading the configuration file # 重新加载配置文件
reopen — reopening the log files # 重新代开日志文件
ps -ax | grep nginx
# mkdir /usr/local/nginx/html/{gtxi,gtjb}
# echo "gongtongxuexi.com" > /usr/local/nginx/html/gtxi/index.html
# echo "gongtongjinbu.com" > /usr/local/nginx/html/gtjb/index.html
配置文件所在位置 /usr/local/nginx/conf/nginx.conf
在配置文件定义虚拟主机加入:
server {
listen 8080;
# listen somename:8080;
server_name www.gongtongxuexi.com;
location / {
root html/gtxi;
index index.html index.htm;
}
}
server {
listen 8081;
# listen somename:8080;
server_name www.gongtongjinbu.com;
location / {
root html/gtjb;
index index.html index.htm;
}
}
/usr/local/nginx/sbin/nginx -s raload
打开浏览器访问 http//iP地址
keepalive_timeout 65; # 设置连接超时时间
# 使用server定义虚拟主机
server {
listen 80; # 监听端口
server_name localhost; # 访问域名
#charset koi8-r; # 编码格式
# 设置虚拟主机的访问日志
#access_log logs/host.access.log main;
# 对URL进行匹配
location / {
# 设置网页根路径
root html;
# 先找html文件,如果没有则htm
index index.html index.htm;
}
HTTPS server
#
#server {
# listen 443 ssl; 监听端口
# server_name localhost; 访问域名
指定证书文件,使用相对路径证书需要在与Nginx.conf同目录下
# ssl_certificate cert.pem;
# ssl_certificate_key cert.key;
指定会话缓存
# ssl_session_cache shared:SSL:1m;
# ssl_session_timeout 5m;
# ssl_ciphers HIGH:!aNULL:!MD5;
# ssl_prefer_server_ciphers on;
# location / {
# root html;
# index index.html index.htm;
# }
1xx:代表提示信息
2xx:代表成功信息
3xx:代表重定向
4XX:代表客户端错误信息
5xx:代表服务器错误信息
1、什么是代理服务器
代理服务器,客户机在发送请求时,不会直接发送给目的主机,而是先发送给代理服务器,代理服务接受客户机请求之后,再向主机发出,并接收目的主机返回的数据,存放在代理服务器的硬盘中,再发送给客户机。
2、为什么要使用代理服务器
1)提高访问速度
由于目标主机返回的数据会存放在代理服务器的硬盘中,因此下一次客户再访问相同的站点数据时,会直接从代理服务器的硬盘中读取,起到了缓存的作用,尤其对于热门站点能明显提高请求速度。
2)防火墙作用
由于所有的客户机请求都必须通过代理服务器访问远程站点,因此可在代理服务器上设限,过滤某些不安全信息。
3)通过代理服务器访问不能访问的目标站点
互联网上有许多开发的代理服务器,客户机在访问受限时,可通过不受限的代理服务器访问目标站点,通俗说,我们使用的翻墙浏览器就是利用了代理服务器,虽然不能出国,但也可直接访问外网。
1、什么是正向代理?什么是反向代理?
正向代理,架设在客户机与目标主机之间,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。
反向代理服务器架设在服务器端,通过缓冲经常被请求的页面来缓解服务器的工作量,将客户机请求转发给内部网络上的目标服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器与目标主机一起对外表现为一个服务器。
2、反向代理有哪些主要应用?
现在许多大型web网站都用到反向代理。除了可以防止外网对内网服务器的恶性攻击、缓存以减少服务器的压力和访问安全控制之外,还可以进行负载均衡,将用户请求分配给多个服务器。
upstream web1.com{
server 192.168.122.206;
}
upstream web2.com{
server 192.168.122.84;
}
server {
listen 80;
# listen someme:8080;
server_name www.web1.com;
location / {
proxy_pass http://web1.com;
index index.html index.htm;
}
}
server {
listen 80;
# listen somename:8080;
server_name www.web2.com;
location / {
proxy_pass http://web2.com;
index index.html index.htm;
}
}