- Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强。事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
- Nginx 以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。
CGI 协议:CGI即通用网关接口(Common Gateway Interface),是外部应用程序(CGI程序)与Web服务器之间的接口标准,是在CGI程序和Web服务器之间传递信息的规程。
- 明确了所谓代理服务器的概念,那么接下来,nginx扮演了反向代理服务器的角色,它是以依据什么样的规则进行请求分发的呢?分发的规则是否可以控制呢?
用户访问<-->Tomcat服务器
架构会造成服务器相应客户端的请求日益缓慢,并发量特别大的时候,还容易造成服务器直接崩溃。很明显这是由于服务器性能的瓶颈造成的问题,那么如何解决这种情况呢?start nginx
启动nginxnginx -s stop
快速关闭Nginx,可能不保存相关信息,并迅速终止web服务。nginx -s quit
平稳关闭Nginx,保存相关信息,有安排的结束web服务。nginx -s reload
因改变了Nginx相关配置,需要重新加载配置而重载。nginx -s reopen
重新打开日志文件。nginx -c filename
为 Nginx 指定一个配置文件,来代替缺省的。nginx -t
不运行,而仅仅测试配置文件。nginx 将检查配置文件的语法的正确性,并尝试打开配置文件中所引用到的文 件。nginx -v
显示 nginx 的版本。nginx -V
显示 nginx 的版本,编译器版本和配置参数worker_processes 4
#work 绑定 cpu(4 work 绑定 4cpu)。
worker_cpu_affinity 0001 0010 0100 1000
#work 绑定 cpu (4 work 绑定 8cpu 中的 4 个) 。
worker_cpu_affinity 0000001 00000010 00000100 00001000
worker_connections* worker_processes
。worker_connections* worker_processes
worker_connections * worker_processes /2
worker_connections * worker_processes/4
。因为作为反向代理服务器,每个并发会建立与客户端的连接和与后端服务的连接,会占用两个连接。rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7- 0.el7.ngx.noarch.rpm
yum install -y nginx
#user nobody; #配置用户或者组,默认为nobody
worker_processes 1; #允许生成的进程数,默认为1
#error_log logs/error.log; #制定日志路径,级别。这个设置可以放入全局块,
#http块,server块,级别以此为:debug|info|notice|warn|error|crit|alert|emerg
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #指定nginx进程运行文件存放地址
accept_mutex on; #设置网路连接序列化,防止惊群现象发生,默认为on
multi_accept on; #设置一个进程是否同时接受多个网络连接,默认为off
#use epoll; #事件驱动模型,select|poll|kqueue|epoll|resig|/dev/poll|eventport
worker_connections 1024; #最大连接数,默认为1024(早期是512)
max_client
max_clients = worker_processes * worker_connections
由HTTP客户端发起一个请求,创建一个到服务器指定端口(默认是80端口)的TCP连接。HTTP服务器则在那个端口监听客户端的请求。一旦收到请求,
服务器会向客户端返回一个状态,比如"HTTP/1.1 200 OK",以及返回的内容,如请求的文 件、错误消息、或者其它信息。同一时刻nginx在处理客
户端发送的http请求应该只是一个connection,由此可知理论上作 为http web服务器角色的nginx能够处理的最大连接数就是最大客户端连接数。
max_clients = worker_processes * worker_connections/4
如果作为反向代理,因为浏览器默认会开启2个连接到server,而且Nginx还会使用fds(file descriptor)从同一个连接池建立连接到upstream后
端。则最大连接数的计算公式需要除4
#配置nginx支持哪些文件扩展名与文件类型映射表。在conf/mime.types查看支持哪些类型
include mime.types;
#默认文件类型(流)类型,支持很多文件、图片、js/css等
default_type application/octet-stream;
#自定义格式
log_format myFormat '$remote_addr–$remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent $http_x_forwarded_for';
access_log log/access.log myFormat; #combined为日志格式的默认值
#优化参数 允许sendfile方式传输文件,开启高校效传输模式
sendfile on; #tcp_nopush on; #防止网络阻塞
#keepalive_timeout 0;
keepalive_timeout 65; #长连接超时时间(单位秒)
#gzip on; #开启gzip压缩
#配置虚拟主机
server {
listen 80; #配置监听端口
server_name localhost; #配置服务器名
#charset koi8-r; #编码格式
#access_log logs/host.access.log main; //主机的访问日志(如没有,全局为准)
#默认的匹配/请求,当访问路径中有/,会被该location匹配处理
location / {
root html; #root是配置服务器的默认网站根目录位置,在nginx目录下html
index index.html index.htm;
}
#error_page 404 /404.html; #配置404页面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #配置50x页面
location = /50x.html { #精确匹配
root html;
}
#禁止(外网)访问 .htaccess文件
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
#location ~ /\.ht {
# deny all;
#}
}
# another virtual host using mix of IP-, name-, and port-based configuration
#
#server {
# listen 8000;
# listen somename:8080;
# server_name somename alias another.alias;
# location / {
# root html;
# index index.html index.htm;
# }
# }
- HTTP:是互联网上应用最为广泛的一种网络协议,是一个客户端和服务器端请求和应答的标准(TCP),用于从WWW服务器传 输超文本到本地浏览器的传输协议,它可以使浏览器更加高效,使网络传输减少。
- HTTPS:是以安全为目标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的 详细内容就需要SSL。(加密)
# HTTPS server
#
#server {
# listen 443 ssl;
# server_name localhost;
# 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;
# }
# }
静态配置文件处理
location / {
root D:/nginx-tomcat/exam; # /opt/static/exam
index index.html index.htm;
}
让nginx进行转发,即所 谓的反向代理 访问localhost时转到tomcat
listen:表示当前的代理服务器监听的端口,默认的是监听80端口。
server_name:表示服务名称。
location:表示匹配的路径,这时配置了/表示所有请求都被匹配到这里
root:里面配置了root这时表示当匹配这个请求的路径时,将会在这个文件夹内寻找相应的文件。
index:当没有指定主页时,默认会选择这个指定的文件,它可以有多个,并按顺序来加载,如果第一个不存在,则找第二 个,依此类推
下面的error_page是代表错误的页面,
server {
listen 80;
server_name localhost;
#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;
}
#error_page 404
localhost时转到tomcat时。修改两个地方:
server_name exam_qf;
location / {
proxy_pass http://127.0.0.1:8080;
}
你知道的越多,你不知道的越多。
有道无术,术尚可求,有术无道,止于术。
如有其它问题,欢迎大家留言,我们一起讨论,一起学习,一起进步