当前位置: 首页 > article >正文

nginx中confx.xml配置

一.基本配置

1.Nginx用户及组:用户 组。window下不指定

user nginx nginx;

2 .工作进程:数目 根据硬件调整,通常等于CPU数量或者2倍于CPU

worker_processes 8;

3 . 错误日志:存放路径

error_log logs/error.log;
error_log logs/error.log notice;
error_log logs/error.log info;

4.#pid(进程标识符):存放路径。

pid logs/nginx.pid;

5.events配置

events
{
  use epoll;
    #使用epoll的I/O 模型。linux建议epoll,FreeBSD建议采用kqueue,window下不指定。
    #补充说明:
    #与apache相类,nginx针对不同的操作系统,有不同的事件模型
    #A)标准事件模型
      #Select、poll属于标准事件模型,如果当前系统不存在更有效的方法,nginx会选择select或poll
    #B)高效事件模型
      #Kqueue:使用于FreeBSD 4.1+, OpenBSD 2.9+, NetBSD 2.0 和 MacOS X.使用双处理器的MacOS X系统使用kqueue可能会造成内核崩溃。
      #Epoll:使用于Linux内核2.6版本及以后的系统。
      #/dev/poll:使用于Solaris 7 11/99+,HP/UX 11.22+ (eventport),IRIX 6.5.15+ 和 Tru64 UNIX 5.1A+。
      #Eventport:使用于Solaris 10。 为了防止出现内核崩溃的问题, 有必要安装安全补丁。
  worker_connections 204800;
    #没个工作进程的最大连接数量。根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行。每个进程允许的最多连接数,理论上每台nginx服务器的最大连接数为。worker_processes*worker_connections
  keepalive_timeout 60;
    #keepalive超时时间。
  client_header_buffer_size 4k;
    #客户端请求头部的缓冲区大小。这个可以根据你的系统分页大小来设置,一般一个请求头的大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。
    #分页大小可以用命令getconf PAGESIZE 取得。
    #[root@web001 ~]# getconf PAGESIZE 4096
    #但也有client_header_buffer_size超过4k的情况,但是client_header_buffer_size该值必须设置为“系统分页大小”的整倍数。
  open_file_cache max=65535 inactive=60s;
    #这个将为打开文件指定缓存,默认是没有启用的,max指定缓存数量,建议和打开文件数一致,inactive是指经过多长时间文件没被请求后删除缓存。
  open_file_cache_valid 80s;
    #这个是指多长时间检查一次缓存的有效信息。
  open_file_cache_min_uses 1;
    #open_file_cache指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件描述符一直是在缓存中打开的,如上例,如果有一个文件在inactive时间内一次没被使用,它将被移除。
}

6.设定http服务器,利用它的反向代理功能提供负载均衡支持
(1)用了log_format指令设置了日志格式之后,需要用access_log指令指定日志文件的存放路径

access_log logs/host.access.log main;
access_log logs/host.access.404.log log404;

(2)客户端请求头部的缓冲区大小
这个可以根据你的系统分页大小来设置,一般一个请求的头部大小不会超过1k,不过由于一般系统分页都要大于1k,所以这里设置为分页大小。分页大小可以用命令getconf PAGESIZE取得

client_header_buffer_size 4k;

(3)客户请求头缓冲大小
nginx默认会用client_header_buffer_size这个buffer来读取header值,如果header过大,它会使用large_client_header_buffers来读取

large_client_header_buffers 8 128k;

(4)是否调用sendfile 函数
sendfile指令指定 nginx 是否调用sendfile 函数(zero copy 方式)来输出文件,对于普通应用,必须设为on。如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络IO处理速度,降低系统uptime。

sendfile on;

(5)后端服务器连接的超时时间_发起握手等候响应超时时间

proxy_connect_timeout 90;

(6)后端服务器数据回传时间_就是在规定时间之内后端服务器必须传完所有的数据

proxy_send_timeout 180;

(7)设置从被代理服务器读取的第一部分应答的缓冲区大小
通常情况下这部分应答中包含一个小的应答头,默认情况下这个值的大小为指令proxy_buffers中指定的一个缓冲区的大小,不过可以将其设置为更小

proxy_buffer_size 256k;

(8)设置用于读取应答
设置用于读取应答(来自被代理服务器)的缓冲区数目和大小,默认情况也为分页大小,根据操作系统的不同可能是4k或者8k

proxy_buffers 4 256k;

(9)设置在写入proxy_temp_path时数据的大小,预防一个工作进程在传递文件时阻塞太长

proxy_temp_file_write_size 256k;

二.upstream目前支持4种方式的分配

1、轮询(默认)

每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。

2、weight
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
例如:

upstream bakend {
server 192.168.0.14 weight=10;
server 192.168.0.15 weight=10;
}

2、ip_hash
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。
例如:

upstream bakend {
ip_hash;
server 192.168.130.131:88;
server 192.168.130.131:80;
}

3、fair(第三方)
按后端服务器的响应时间来分配请求,响应时间短的优先分配。

upstream backend {
server server1;
server server2;
fair;
}

4、url_hash(第三方)

按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

例:在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法

upstream backend {
server squid1:3128;
server squid2:3128;
hash $request_uri;
hash_method crc32;
}

三.示例

1.端口转发 反向代理

#user  nobody;
worker_processes  2;#error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;#pid        logs/nginx.pid;events {worker_connections  1024;
}http {include       mime.types;default_type  application/octet-stream;#log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '#                  '$status $body_bytes_sent "$http_referer" '#                  '"$http_user_agent" "$http_x_forwarded_for"';#access_log  logs/access.log;sendfile        on;#tcp_nopush     on;#keepalive_timeout  0;keepalive_timeout  65;#gzip  on;server {listen       80;server_name  com.sxkj;#charset koi8-r;access_log  logs/access.log ;error_log  logs/error.log;location / {root   html;index  index.html index.htm;}location ^~/shiro/ {proxy_pass  http://com.sxkj:8888/;proxy_cookie_path / /;#Proxy Settingsproxy_redirect     off;proxy_set_header   Host             $host;proxy_set_header   X-Real-IP        $remote_addr;proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for;proxy_set_header   Cookie $http_cookie; proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504;proxy_max_temp_file_size 0;proxy_connect_timeout      90;proxy_send_timeout         90;proxy_read_timeout         90;proxy_buffer_size          4k;proxy_buffers              4 32k;proxy_busy_buffers_size    64k;proxy_temp_file_write_size 64k;}}
}

在Tomcat配置下访问
http://com.sxkj:8888/test2/index 正常访问,部署方式在https://blog.csdn.net/u010520146/article/details/81623586 有详细介绍

在nginx配置下,通过访问 http://com.sxkj/shiro/ 拦截请求转发到 http://com.sxkj:8888/
所以最终访问 http://com.sxkj/shiro/test2/index 即转发到 http://com.sxkj:8888/test2/index 页面

http://www.lryc.cn/news/2416281.html

相关文章:

  • 电影职员表中英文正确翻译及介绍
  • ASP.NET 淘宝网站形式的设计与实现(论文+源码)_Nueve
  • 理性主义与西方思想传统
  • 中脉乱象之四问中脉人
  • 北师大19秋计算机在线1,北师19秋《专科英语(二)》在线作业1【满分答案】
  • Netsuite设置中文多语言
  • QQ桌球瞄准器开发(1)桌球瞄准器介绍与使用方法
  • 代码审计入门学习笔记
  • 大学毕业生,关于转正定级和干部身份你懂吗?
  • 女人一生要读的30本书
  • 域名备案与空间备案有什么关系吗,域名备案又是怎么回事?
  • Redis常用命令大集合(快速入门)
  • 更改GROOVE的文件夹位置
  • SUN 的Java编码规范
  • Android 开发论坛
  • Orchestrator源码解读4-计划内切换
  • 电磁场理论基础 01-17
  • Windows自带的小巧的调试利器--Dr.Watson
  • linux测试netwox,关于netwox 78号工具的阻断实验
  • (36.1)【验证码漏洞专题】验证码复用、无效验证码、未绑定验证码、前端获取、暴力破解、回显……
  • AJAX-基本了解和掌握(前端必掌握在后台与服务器交换数据)
  • 智慧校园学生信息管理系统【面向对象分析与建模】UML
  • python的time模块没有clock_python之time模块
  • Source Insight基础入门教程
  • 第一课:路由器宽带拨号入网(小米路由器)
  • 智力题合集,欢迎补充!
  • 生成SSL证书
  • p标签英文不自动换行的问题
  • Visual Studio 2008系列教程(一):VS 2008安装详解!
  • 诺基亚1600自谱铃声方法