Nginx反向代理服务器配置基础教程

Nginx反向代理服务器配置基础教程
Nginx反向代理服务器配置基础教程

Nginx反向代理服务器配置教程一,系统架构

二,Nginx安装

系统环境与组件:

Centos 6.6 x64

nginx v1.92

gcc

openssl-devel

pcre-devel

libevent

1,更换国内源

1)、下载新源及将本地源备份

# cd /etc/yum.repos.d/

# wget https://www.360docs.net/doc/cb4297873.html,/.help/CentOS6-Base-163.repo

# mv CentOS-Base.repo CentOS-Base.repo.backup

# mv CentOS6-Base-163.repo CentOS-Base.repo

2)、yum源更新

# yum clean all && yum makecache && yum update -y

3)、完成

2,安装依赖包

1)

# yum -y install gcc

# yum -y install openssl openssl-devel

# yum -y install pcre-devel

检查安装结果命令:

# rpm -qa |grep gcc

2)安装libevent

libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。官网下载地址:https://www.360docs.net/doc/cb4297873.html,/

安装步骤:

# cd ~ #进入用户主目录,软件包都保存在这里。

# wget https://www.360docs.net/doc/cb4297873.html,/project/levent/libevent/libevent-2.1/libevent-2.1.4-alpha.tar.gz

# tar –xvf libevent-2.1.4-alpha.tar.gz

# cd libevent-2.1.4-alpha

# ./configure

# make

# make install

3,相关用户及目录建立

1)建立运行nginx的用户与用户组

# groupadd -r nginx

# useradd -r -g nginx -s /bin/false -M nginx

2)建立安装nginx要用到的临时文件目录

#mkdir -p/var/tmp/nginx/proxy

4,Nginx安装

1)下载nginx-1.9.2.tar.gz,上传至/root目录。

# cd ~

# tar –xvf nginx-1.9.2.tar.gz

# cd nginx-1.9.2

/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx/nginx.pid --lock-path=/var/lock/nginx.lock --user=nginx --group=nginx --with-http_ssl_module --with-http_flv_module --with-http_stub_status_module --with-ht tp_gzip_static_module --http-proxy-temp-path=/var/tmp/nginx/proxy/ --http-fastcgi-temp-path=/var/tmp/nginx/fcgi/ --with-pcre

# make && make install

参数释义:

--prefix=/usr

#安装完成将自动生成目录usr,而且该软件任何的文档都被复制到这个目录

--sbin-path=/usr/sbin/nginx Nginx

#可执行文件安装路径。只能安装时指定,如果没有指定,默认为/sbin/nginx。

--conf-path=/etc/nginx/nginx.conf

# 在没有给定-c选项下默认的nginx.conf的路径。如果没有指定,默认为/conf/nginx.conf。

--error-log-path=/var/log/nginx/error.log

# 在nginx.conf中没有指定error_log指令的情况下,默认的错误日志的路径。如果没有指定,默认为/logs/error.log。

--http-log-path=/var/log/nginx/access.log

# 在nginx.conf中没有指定access_log指令的情况下,默认的访问日志的路径。如果没有指定,默认为/logs/access.log。

--pid-path=/var/run/nginx/nginx.pid

# 在nginx.conf中没有指定pid指令的情况下,默认的nginx.pid的路径。如果没有指定,默认为/logs/nginx.pid。--lock-path=/var/lock/nginx.lock

# nginx.lock文件的路径。

--user=nginx

# 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的用户。如果没有指定,默认为nobody。

--group=nginx

# 在nginx.conf中没有指定user指令的情况下,默认的nginx使用的组。如果没有指定,默认为nobody。

--with-http_ssl_module

# 开启HTTP SSL模块,使NGINX可以支持HTTPS请求。这个模块需要已经安装了OPENSSL,在DEBIAN上是libssl --with-http_flv_module

# 启用ngx_http_flv_module,模块ngx_http_flv_module为Flash Video(FLV)文件提供服务端伪流媒体支持

--with-http_stub_status_module

# 启用"server status" 页

--with-http_gzip_static_module

# 启用ngx_http_gzip_module,静态压缩

--http-proxy-temp-path=/var/tmp/nginx/proxy/

# 设置路径http代理临时文件

--http-fastcgi-temp-path=/var/tmp/nginx/fcgi/

# 设置路径的http FastCGI的临时文件

--with-pcre

# 启用正则表达式及rewrite模块

安装完毕记住以下路径:

nginx path prefix: "/usr"

nginx binary file: "/usr/sbin/nginx"

nginx configuration prefix: "/etc/nginx"

nginx configuration file: "/etc/nginx/nginx.conf"

nginx error log file: "/var/log/nginx/error.log"

nginx http access log file: "/var/log/nginx/access.log"

nginx http client request body temporary files: "client_body_temp"

nginx http proxy temporary files: "/var/tmp/nginx/proxy/"

nginx http fastcgi temporary files: "/var/tmp/nginx/fcgi/"

nginx http uwsgi temporary files: "uwsgi_temp"

nginx http scgi temporary files: "scgi_temp"

注意:后面的各种配件文件中要用到的路径都与这里保持一致。

5,运行nginx测试网站

1)运行nginx服务

# nginx

2)打开http://192.168.1.86,如果能看到如下图,那么配置成功;

3)如果打不开,可能是防火墙端口没开,可以关闭防火墙后试一下,具体如何开启80端口,本教程不做介绍;# service iptables stop

三,配置nginx反向代理服务

1、修改nginx服务配置文件:

# vi /etc/nginx/nginx.conf

配置文件内容如下:

######################################################################

# 设置运行nginx的用户

user nginx nginx;

# 这里设置为当前CPU核心数

worker_processes 1;

# nginx运行日志

error_log /var/log/nginx/error.log;

# nginx运行进程ID存储路径

pid /var/run/nginx/nginx.pid;

# 每个nginx进程打开文件描述符最大数目

worker_rlimit_nofile 65535;

events {

use epoll;

worker_connections 65535;

}

http {

include mime.types;

default_type application/octet-stream;

# 站点配置文件路径

include /etc/nginx/conf.d/*.conf;

# 开启高效文件传输模式,sendfile指令指定nginx是否调用sendfile函数来输出文件,对于普通应用设为on,如果用来进行下载等应用磁盘IO重负载应用,可设置为off,以平衡磁盘与网络I/O处理速度,降低系统的负载。注意:如果图片显示不正常把这个改成off

sendfile on;

# 长连接超时时间,单位是秒

keepalive_timeout 120;

# 开启gzip压缩输出

gzip on;

# 缓冲区代理缓冲用户端请求的最大字节数,可以理解为保存到本地再传给用户

client_max_body_size 50m;

# 缓冲区代理缓冲用户端请求的最大字节数

client_body_buffer_size 256k;

# 设置请求头的超时时间

client_header_timeout 10;

# 设置请求体的超时时间

client_body_timeout 10;

# 指定客户端的响应超时时间

send_timeout 10;

# nginx跟后端服务器连接超时时间(代理连接超时)

proxy_connect_timeout 300;

# 连接成功后,后端服务器响应时间(代理接收超时)

proxy_read_timeout 300;

# 后端服务器数据回传时间(代理发送超时)

proxy_send_timeout 300;

# 设置代理服务器(nginx)保存用户头信息的缓冲区大小

proxy_buffer_size 64k;

# proxy_buffers缓冲区,网页平均在32k以下的话,这样设置

proxy_buffers 4 32k;

# 高负荷下缓冲大小(proxy_buffers*2)

proxy_busy_buffers_size 64k;

# 设定缓存文件夹大小,大于这个值,将从upstream服务器传递请求,而不缓冲到磁盘proxy_temp_file_write_size 64k;

# 不允许代理端主动关闭连接

proxy_ignore_client_abort on;

}

######################################################################

2、新建站点配置文件/etc/nginx/conf.d/govpf.conf

# mkdir –p /etc/nginx/conf.d

# vi /etc/nginx/conf.d/govpf.conf

配置文件内容如下:

######################################################################

#192.168.1.85 https://www.360docs.net/doc/cb4297873.html,

server

{

listen 80;

# 设置站点域名

server_name https://www.360docs.net/doc/cb4297873.html,;

location / {

proxy_redirect off;

proxy_set_header X-Real-IP $remote_addr;

proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

#被转发地址及端口号

proxy_pass http://192.168.1.85:8001;

}

# 运行日志设置

access_log /var/log/nginx/https://www.360docs.net/doc/cb4297873.html,_access.log;

}

######################################################################

注意:如果有多个站点,可以将以上内容复制后添加到配置末尾即可,或者另外新建一个任意名称的配置文件单独存放也行。

配置完成后可以运行nginx –t来检查配置文件是否有错误。

四,将nginx创建为服务并加入开机启动

1)新建启动脚本

# cd ~

# vi nginx

新建启动脚本内容如下:

######################################################################

#!/bin/sh

#

# nginx - this script starts and stops the nginx daemon

#

# chkconfig: - 85 15

# description: Nginx is an HTTP(S) server, HTTP(S) reverse \

# proxy and IMAP/POP3 proxy server

# processname: nginx

# config: /etc/nginx/nginx.conf

# config: /etc/sysconfig/nginx

# pidfile: /var/run/nginx.pid

# Source function library.

. /etc/rc.d/init.d/functions

# Source networking configuration.

. /etc/sysconfig/network

# Check that networking is up.

# 设置nginx运行路径

nginx="/usr/sbin/nginx"

prog=$(basename $nginx)

sysconfig="/etc/sysconfig/$prog"

lockfile="/var/lock/subsys/nginx"

# 设置nginx进程ID路径,这里容易设错,注意一定要跟之前nginx.conf里设置的路径一致pidfile="/var/run/nginx/nginx.pid"

# 设置nginx配置文件路径

NGINX_CONF_FILE="/etc/nginx/nginx.conf"

[ -f $sysconfig ] && . $sysconfig

start() {

[ -x $nginx ] || exit 5

[ -f $NGINX_CONF_FILE ] || exit 6

echo -n $"Starting $prog: "

daemon $nginx -c $NGINX_CONF_FILE

retval=$?

echo

[ $retval -eq 0 ] && touch $lockfile

return $retval

}

stop() {

echo -n $"Stopping $prog: "

killproc -p $pidfile $prog

retval=$?

echo

[ $retval -eq 0 ] && rm -f $lockfile

return $retval

}

restart() {

configtest_q || return 6

stop

start

}

reload() {

configtest_q || return 6

echo -n $"Reloading $prog: "

killproc -p $pidfile $prog -HUP

echo

configtest() {

$nginx -t -c $NGINX_CONF_FILE

}

configtest_q() {

$nginx -t -q -c $NGINX_CONF_FILE

}

rh_status() {

status $prog

}

rh_status_q() {

rh_status >/dev/null 2>&1

}

# Upgrade the binary with no downtime.

upgrade() {

local oldbin_pidfile="${pidfile}.oldbin"

configtest_q || return 6

echo -n $"Upgrading $prog: "

killproc -p $pidfile $prog -USR2

retval=$?

sleep 1

if [[ -f ${oldbin_pidfile} && -f ${pidfile} ]]; then killproc -p $oldbin_pidfile $prog -QUIT

success $"$prog online upgrade"

echo

return 0

else

failure $"$prog online upgrade"

echo

return 1

fi

}

# Tell nginx to reopen logs

reopen_logs() {

configtest_q || return 6

echo -n $"Reopening $prog logs: "

killproc -p $pidfile $prog -USR1

retval=$?

echo

return $retval

}

start)

rh_status_q && exit 0

$1

;;

stop)

rh_status_q || exit 0

$1

;;

restart|configtest|reopen_logs)

$1

;;

force-reload|upgrade)

rh_status_q || exit 7

upgrade

;;

reload)

rh_status_q || exit 7

$1

;;

status|status_q)

rh_$1

;;

condrestart|try-restart)

rh_status_q || exit 7

restart

;;

*)

echo $"Usage: $0 {start|stop|reload|configtest|status|force-reload|upgrade|restart|reopen_logs}"

exit 2

esac

######################################################################

2)创建服务

# cp nginx /etc/init.d/nginx

# chmod 775 /etc/init.d/nginx

# cd /etc/init.d/

# chkconfig –add nginx

# chkconfig nginx on

3) 测试服务

# pkill nginx # 停止nginx进程

# service nginx start #启动服务

# service nginx stop #停止服务

# service nginx restart #重启服务

以上测试都不报错的话说明配置正常。

4)最后一步,测试是否转发正常,如果不正常,请检查/etc/nginx/conf.d下的配置文件。

常州网管员论坛

李老实

2015-06-26

nginx负载均衡宕机配置

1.摘要 (1)结论 详细描述了nginx记录失效节点的6种状态(time out、connect refuse、500、502、503、504,后四项5XX需要配置proxy_next_upstream中的状态才可 以生效)、失效节点的触发条件和节点的恢复条件、所有节点失效后nginx会进 行恢复并进行重新监听。 (2)Nginx 负载均衡方式介绍 Nginx的负载均衡方式一共有4种:rr(轮询模式)、ip_hash、fair、url_hash。(3)Ngxin负载均衡和相关反向代理配置内容 Nginx负载均衡和与容错相关的反向代理的配置。 (4)获取后端流程 后端server的自动容错流程图。 (5)测试环境和测试结果 针对几种错误方式进行自动容错测试。 2.结论 (1)nginx 判断节点失效状态 Nginx 默认判断失败节点状态以connect refuse和time out状态为准,不以HTTP错误状态进行判断失败,因为HTTP只要能返回状态说明该节点还可以正常连接,所以nginx判断其还是存活状态;除非添加了proxy_next_upstream指令设置 对404、502、503、504、500和time out等错误进行转到备机处理,在 next_upstream过程中,会对fails进行累加,如果备用机处理还是错误则直接返回错误信息(但404不进行记录到错误数,如果不配置错误状态也不对其进行错误状态记录),综述,nginx记录错误数量只记录timeout 、connect refuse、502、500、503、504这6种状态,timeout和connect refuse是永远被记录错误状态,而502、500、503、504只有在配置proxy_next_upstream后nginx才会记录这4种HTTP 错误到fails中,当fails大于等于max_fails时,则该节点失效; (2)nginx 处理节点失效和恢复的触发条件 nginx可以通过设置max_fails(最大尝试失败次数)和fail_timeout(失效时间,在到达最大尝试失败次数后,在fail_timeout的时间范围内节点被置为失效,除非所 有节点都失效,否则该时间内,节点不进行恢复)对节点失败的尝试次数和失效时间 进行设置,当超过最大尝试次数或失效时间未超过配置失效时间,则nginx会对节点 状会置为失效状态,nginx不对该后端进行连接,直到超过失效时间或者所有节点都 失效后,该节点重新置为有效,重新探测;

Nginx反向代理服务器的工作原理

最近有打算研读nginx源代码,看到网上介绍nginx可以作为一个反向代理服务器完成负载均衡。所以搜罗了一些关于反向代理服务器的内容,整理综合。 一概述 反向代理(Reverse Proxy)方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器;并将从服务器上得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器。 通常的代理服务器,只用于代理内部网络对Internet的连接请求,客户机必须指定代理服务器,并将本来要直接发送到Web服务器上的http请求发送到代理服务器中。当一个代理服务器能够代理外部网络上的主机,访问内部网络时,这种代理服务的方式称为反向代理服务。 图1 反向代理服务器的基本原理 二反向代理服务器的工作原理 反向代理服务器通常有两种模型,它可以作为内容服务器的替身,也可以作为内容服务器集群的负载均衡器。 1,作内容服务器的替身 如果您的内容服务器具有必须保持安全的敏感信息,如信用卡号数据库,可在防火墙外部设置一个代理服务器作为内容服务器的替身。当外部客户机尝试访问内容服务器时,会将其送到代理服务器。实际内容位于内容服务器上,在防火

墙内部受到安全保护。代理服务器位于防火墙外部,在客户机看来就像是内容服务器。 当客户机向提出请求时,请求将转到代理服务器。然后,代理服务器通过防火墙中的特定通路,将客户机的请求发送到内容服务器。内容服务器再通过该通道将结果回传给代理服务器。代理服务器将检索到的信息发送给客户机,好像代理服务器就是实际的内容服务器(参见图 2)。如果内容服务器返回错误消息,代理服务器会先行截取该消息并更改标头中列出的任何 URL,然后再将消息发送给客户机。如此可防止外部客户机获取内部内容服务器的重定向 URL。 这样,代理服务器就在安全数据库和可能的恶意攻击之间提供了又一道屏障。与有权访问整个数据库的情况相对比,就算是侥幸攻击成功,作恶者充其量也仅限于访问单个事务中所涉及的信息。未经授权的用户无法访问到真正的内容服务器,因为防火墙通路只允许代理服务器有权进行访问。 图2 反向代理服务器作为内容服务器的替身 可以配置防火墙路由器,使其只允许特定端口上的特定服务器(在本例中为其所分配端口上的代理服务器)有权通过防火墙进行访问,而不允许其他任何机器进出。 2,作为内容服务器的负载均衡器 可以在一个组织内使用多个代理服务器来平衡各 Web 服务器间的网络负载。在此模型中,可以利用代理服务器的高速缓存特性,创建一个用于负载平衡的服务器池。此时,代理服务器可以位于防火墙的任意一侧。如果 Web 服务器每天都会接收大量的请求,则可以使用代理服务器分担 Web 服务器的负载并提高网络访问效率。 对于客户机发往真正服务器的请求,代理服务器起着中间调停者的作用。代理服务器会将所请求的文档存入高速缓存。如果有不止一个代理服务器,DNS 可

使用Nginx搭建反向代理

引言:最近公司有台服务器遭受DDOS攻击,流量在70M以上,由于服务器硬件配置较高所以不需要DDOS硬件防火墙。但我们要知道,IDC机房是 肯定不允许这种流量一直处于这么高的,因为没法具体知道后面陆续攻击的流量会有多大,如果流量过大就会导致整个IDC网络瘫痪。我们都知道北方的数据中心和南方的数据中心从带宽出口上来讲南方多数机房完全有能力扛得住DDOS攻击,东莞的电信机房就不错。有朋友说过面对这种攻击可以在南方电信 在放一台服务器,然后做个反向代理;令我不解的是倘若再在南方放一台服务器,然后在南方电信服务器上做反向代理的话北方的用户访问速度肯定会很慢(南方机房多为电信单线,北京的多为双线或BGP线路)。好了,我们言归正传,不管用反向代理是怎么去实现,首先我们要解决的是如何搭建一台反向代理服务器,免得临时抱佛脚。 首先我们来看理解一下什么是反向代理,如下图:当客户机向站点发出请求时,请求将转到代理服务器,然后然后代理服务器将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给Internet上请求连接的客户,对于访问服务器的用户来讲,此时的代理服务器对外就表现为一台服务器;我们还可以在反向代理服务器上加上一些策略,这样就对web服务器进行了一种安全保护,即使用户想入侵网站,也无法到达web服务器;反向代理服务器后端还可以放置多台 web服务器,从而可以减轻网站压力,起到集群作用 我们都知道Nginx是一款非常不错的程序,其最大的优点就是能承载高并发连接,这次我们就用Nginx来做一台反向代理服务器 环境描述:反向代理服务器为Linux系统,安装有Nginx;web服务器为windows 系统,装有IIS 目标:客户端在访问192.168.1.20的时候得到的内容必须是192.168.1.10这台web服务器上的内容

Nginx高级配置

Nginx高级配置 1. Nginx连接后端的方式:反向代理(proxy_pass)、直连 fastcgi(fastcgi_pass) 例子: fastcgi_pass backend1; proxy_pass http://backend2; location块中配置此项,表示用反向代理或直连fastcgi的方式连接后端服务,其中backend1、backend2为upstream配置,其中配置下游的ip&port列表和调度参数,见下文。 注意:fastcgi_pass与proxy_pass是互斥配置,不能同时生效。 2. Nginx调度与负载均衡配置(upstream 配置) 1) 轮询(默认)每个请求按时间顺序逐一分配到不同的后端服务器。weight指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况,weight默认值为1。 例如: upstreambakend { server 192.168.0.14 weight=10; server 192.168.0.15 weight=10; } 2) ip_hash 每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,可以解决session的问题。 例如: upstreambakend { ip_hash; server 192.168.0.14:88; server 192.168.0.15:80; } 3) hash 每个请求按访问$hash_seed的hash结果分配。 例如: upstreambakend { hash $hash_seed; server 192.168.0.14:88; server 192.168.0.15:80;

在Linux虚拟机中搭建Nginx服务器以及SSL、反向代理和负载均衡的实现

在Linux虚拟机中搭建Nginx服务器以及SSL、反向代理和负载均衡的实现 目录 一、虚拟机下网络的网络配置 (2)

1、Bridged模式 (2) 2、NAT 模式 (3) 3、host-only 模式: (4) 4、作业环境网络拓扑图 (4) 二、Nginx的安装与配置 (5) 1、Nginx简介 (5) 2、安装前的环境准备 (5) 3、下载安装 (6) 4、控制Nginx服务 (6) 5、配置nginx (7) 6、负载测试 (9) 三、基于OpenSSL部署https网站 (9) 1、OpenSSL以及SSL/TLS协议简介: (9) 2、Linux下配置https (10) 3、SSL/TSL协议分析 (12) 四、用Nginx实现负载均衡和反向代理 (15) 1、反向代理的实现 (15) 2、负载均衡 (18) 一、虚拟机下网络的网络配置 1、Bridged模式 在桥接模式下,VMware虚拟机里的系统就像是局域网中的一台独立的主机,它可以访问同一个网段内任何一台机器,即可以相互ping通。

在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,就可以手工配置它的IP,DNS服务器,网关等信息,以实现通过局域网的网关或通过交换机访问外网。 图1 本地物理网卡和虚拟网卡通过虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位。 Vmware默认给虚拟系统提供了一个虚拟网卡(linux下默认为eth0设备),虚拟系统通过该网卡与外部通信。图中虚拟交换机由vmware提供,其默认设备名为VMnet0。如图1所示。 2、NAT 模式 NAT 即Network Address Translation 缩写,即网络地址转换,由NAT服务完成,在vmware里默认为VMnet8虚拟交换机,它将虚拟系统的IP地址转换成宿主机的IP地址,从而借用宿主机访问其他主机。使用NAT模式,也可以让虚拟系统通过宿主机器所在的网络来访问公网。 在这种模式下,虚拟系统是不能被LAN内其他PC访问的(宿主机可以,稍后讲),只能虚拟机以宿主机的名义访问LAN内的计算机。默认情况下NAT模式的虚拟系统的TCP/IP 配置信息由VMnet8(NAT)虚拟网络的DHCP服务器提供,因此采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。 图2 VMware Network Adepter VMnet8虚拟网卡的作用就是为主机和虚拟机的通信提供一个接口,即使主机关闭该网卡,虚拟机仍然可以连接到Internet,但是主机和虚拟机之间就不能互访了,还有访问局域网内的其他计算机,也是通过NAT服务实现。如图2所示

[全]Nginx配置文件上下文结构

Nginx配置文件上下文结构 1.Nginx配置文件上下文结构个Nginx的功能模块包含 系列的命令(cmd)以及与命令对应的处理函数(cmd→handler)。而Nginx 根据配置文件中的配 置指令就知道对应到哪个模块的哪个命令,然后调用命令对应的处理函数来处理。 一个Nginx配置文件包含若干配置项,每个配置项由配置指令和指令参数两部分组成,3个简单的Nginx配置项 Nginx配置文件中的配置指令如果包含空格,就需要用单引号或双引号引起来。指令参数如果 是由简单的字符串构成的,简单配置项就需要以分号结束;指令参数如果是复杂的多行字符串, 配置项就需要用花括号“{}”括起来。 Nginx配置项的具体功能与其所处的作用域(上下文、配置块)是强相关的。Nginx指令的作 用域配置块大致有5种,它们之间的层次关系。

5种Nginx指令的作用和它们之间的层次关系一个标准的Nginx配置文件的上下文结构如 下:

... #main全局配置块,例如工作进程数 events { #events事件处理模式配置块,例如IO读写模式、连接数等... } http #HTTP协议配置块 { ... #HTTP协议的全局配置块

server #server虚拟服务器配置块 一 { ... #server全局块location [PATTERN] #location路由规则配置块一 { ... } location [PATTERN] #location路由规则配置块二 { ... } } server #server虚拟服务器配置块二 { ...

Nginx安装及简单配置反向代理

Nginx安装及简单配置反向代理一.环境 VMware: Redhat(Server_A 部署nginx文件服务页面) WinServer(Server_B 部署IIS) Redhat(nginx代理服务器) 源码包: nginx-1.5.3.tar.gz openssl-1.0.1c.tar.gz (提供ssl加密协议) pcre-8.33.tar.gz (http rewrite模块:地址重写) zlib-1.2.8.tar.gz (gzip模块,传输数据打包)拓扑结构: 二.安装 1.安装基础编译环境 yum install -y gcc gcc-c++ make 2.安装

2.1解压 cd /tmp/soft/ tar xzfv nginx-1.5.3.tar.gz cd .. tar xzfv openssl-1.0.1c.tar.gz cd .. tar xzfv pcre-8.33.tar.gz cd .. tar xzfv zlib-1.2.8.tar.gz 2.2安装依赖 cd/tmp/soft/pcre-8.33 ./configure make&&make install cd/tmp/soft/zlib-1.2.8 ./configure make&&make install cd/tmp/soft/openssl-1.0.1c ./configure make&&make install 2.3安装nginx cd/tmp/soft/nginx-1.5.3 ./configure --prefix=/home/nginx --with-http_stub_status _module --with-http_ssl_module ./configure –help #查看配置概述 make&&make install 3.yum安装依赖包:

Nginx 配置文件nginx.conf的完整配置说明

#用户用户组 user www www; #工作进程,根据硬件调整,有人说几核cpu,就配几个,我觉得可以多一点 worker_processes 5; #错误日志 error_log logs/error.log; #pid文件位置 pid logs/nginx.pid; worker_rlimit_nofile 8192; events { #工作进程的最大连接数量,根据硬件调整,和前面工作进程配合起来用,尽量大,但是别把cpu跑到100%就行 worker_connections 4096; } http { include conf/mime.types; #反向代理配置,可以打开proxy.conf看看 include /etc/nginx/proxy.conf; #fastcgi配置,可以打开fastcgi.conf看看 include /etc/nginx/fastcgi.conf; default_type application/octet-stream; #日志的格式 log_format main '$remote_addr - $remote_user [$time_local] $status ' '"$request" $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; #访问日志 access_log logs/access.log main; sendfile on; tcp_nopush on;

#根据实际情况调整,如果server很多,就调大一点 server_names_hash_bucket_size 128; # this seems to be required for some vhosts #这个例子是fastcgi的例子,如果用fastcgi就要仔细看 server { # php/fastcgi listen 80; #域名,可以有多个 server_name https://www.360docs.net/doc/cb4297873.html, https://www.360docs.net/doc/cb4297873.html,; #访问日志,和上面的级别不一样,应该是下级的覆盖上级的 access_log logs/domain1.access.log main; root html; location / { index index.html index.htm index.php; } #所有php后缀的,都通过fastcgi发送到1025端口上 #上面include的fastcgi.conf在此应该是有作用,如果你不include,那么就把fastcgi.conf的配置项放在这个下面。 location ~ .php$ { fastcgi_pass 127.0.0.1:1025; } } #这个是反向代理的例子 server { # simple reverse-proxy listen 80; server_name https://www.360docs.net/doc/cb4297873.html, https://www.360docs.net/doc/cb4297873.html,; access_log logs/domain2.access.log main; #静态文件,nginx自己处理 location ~ ^/(images|javascript|js|css|flash|media|static)/ {

Nginx配置文件(nginx.conf)配置详解

Nginx配置文件(nginx.conf)配置详解 usernginxnginx ; Nginx用户及组:用户组。window下不指定 worker_processes 8; 工作进程:数目。根据硬件调整,通常等于CPU数量或者2倍于CPU。 error_log logs/error.log; error_log logs/error.log notice; error_log logs/error.log info; 错误日志:存放路径。 pid logs/nginx.pid; pid(进程标识符):存放路径。 worker_rlimit_nofile 204800; 指定进程可以打开的最大描述符:数目。 这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 events { useepoll; 使用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

Nginx代理操作手册

1Nginx的作用 Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外nginx可以作为反向代理进行负载均衡的实现。 nginx在1.9版本之后可以充当端口转发的作用,即:访问该服务器的指定端口,nginx就可以充当端口转发的作用将流量导向另一个服务器,同时获取目标服务器的返回数据并返回给请求者。nginx的TCP代理功能跟nginx的反向代理不同的是:请求该端口的所有流量都会转发到目标服务器,而在反向代理中可以细化哪些请求分发给哪些服务器;另一个不同的是,nginx做TCP代理并不仅仅局限于WEB的URL请求,还可以转发如memcached、MySQL等点到点的请求 2Nginx的安装 2.1在线安装 下载Nginx及相关组件 进入用户目录下载程序 下载相关组件 [root@localhost src]# wget https://www.360docs.net/doc/cb4297873.html,/download/nginx-1.10.2.tar.gz 省略安装内容... [root@localhost src]# wget

https://www.360docs.net/doc/cb4297873.html,/source/openssl-fips-2.0.10.tar.gz 省略安装内容... [root@localhost src]# wget https://www.360docs.net/doc/cb4297873.html,/zlib-1.2.11.tar.gz 省略安装内容... [root@localhost src]# wget ftp://https://www.360docs.net/doc/cb4297873.html,/pub/software/programming/pcre/pcre-8.40.tar.gz 省略安装内容... 安装c++编译环境,如已安装可略过 [root@localhost src]# yum install gcc-c++ 省略安装内容... 期间会有确认提示输入y回车 Is this ok [y/N]:y 省略安装内容... 安装Nginx及相关组件 openssl安装 [root@localhost src]# tar zxvf openssl-fips-2.0.10.tar.gz 省略安装内容... [root@localhost src]# cd openssl-fips-2.0.10 [root@localhost openssl-fips-2.0.10]# ./config && make && make install 省略安装内容... pcre安装 [root@localhost src]# tar zxvf pcre-8.40.tar.gz

Nginx负载均衡的详细配置及使用案例详解

Nginx负载均衡的详细配置及使用案例详解. 技术无止境, 我们仍需努力! 1,话不多说, 这里我们来说下很重要的负载均衡, 那么什么是负载均衡呢? 由于目前现有网络的各个核心部分随着业务量的提高,访问量和数据流量的快速增长,其处理能力和计算强度也相应地增大,使得单一的服务器设备根本无法承担。在此情况下,如果扔掉现有设备去做大量的硬件升级,这样将造成现有资源的浪费,而且如果再面临下一次业务量的提升时,这又将导致再一次硬件升级的高额成本投入,甚至性能再卓越的设备也不能满足当前业务量增长的需求。 针对此情况而衍生出来的一种廉价有效透明的方法以扩展现有网络设备和服务器的带宽、增加吞吐量、加强网络数据处理能力、提高网络的灵活性和可用性的技术就是负载均衡(Load Balance)。 2, 负载均衡的种类 1)一种是通过硬件来进行解决,常见的硬件有NetScaler、F5、Radware 和Array等商用的负载均衡器,但是它们是比较昂贵的 2)一种是通过软件来进行解决的,常见的软件有LVS、Nginx、apache 等,它们是基于Linux系统并且开源的负载均衡策略.

3, 这里我们只来说Nginx(其他的大家有兴趣可以自行查阅相关文档) Nginx(发音同engine x)是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev(伊戈尔·西索夫)所开发,供俄国大型的入口网站及搜索引擎Rambler(漫步者)(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:新浪、网易、腾讯等。 优点: 1:可运行linux,并有 Windows 移植版。 2:在高连接并发的情况下,Nginx是Apache服务器不错的替代品Nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一。能够支持高达50,000 个并发连接数的响应 4, 创建两台Nginx服务器 由于自己在自己电脑上搭建, 所以现在只模拟搭建两台Nginx服务器. 负载均衡的功能: 转发 故障移除

Nginx反向代理服务器配置基础教程

Nginx反向代理服务器配置教程一,系统架构 二,Nginx安装 系统环境与组件: Centos 6.6 x64 nginx v1.92 gcc openssl-devel pcre-devel libevent 1,更换国内源 1)、下载新源及将本地源备份 # cd /etc/yum.repos.d/ # wget https://www.360docs.net/doc/cb4297873.html,/.help/CentOS6-Base-163.repo # mv CentOS-Base.repo CentOS-Base.repo.backup # mv CentOS6-Base-163.repo CentOS-Base.repo

2)、yum源更新 # yum clean all && yum makecache && yum update -y 3)、完成 2,安装依赖包 1) # yum -y install gcc # yum -y install openssl openssl-devel # yum -y install pcre-devel 检查安装结果命令: # rpm -qa |grep gcc 2)安装libevent libevent是一个事件触发的网络库,适用于windows、linux、bsd等多种平台,内部使用select、epoll、kqueue等系统调用管理事件机制。著名分布式缓存软件memcached也是libevent based,而且libevent在使用上可以做到跨平台,而且根据libevent官方网站上公布的数据统计,似乎也有着非凡的性能。官网下载地址:https://www.360docs.net/doc/cb4297873.html,/ 安装步骤: # cd ~ #进入用户主目录,软件包都保存在这里。 # wget https://www.360docs.net/doc/cb4297873.html,/project/levent/libevent/libevent-2.1/libevent-2.1.4-alpha.tar.gz # tar –xvf libevent-2.1.4-alpha.tar.gz # cd libevent-2.1.4-alpha # ./configure # make # make install 3,相关用户及目录建立 1)建立运行nginx的用户与用户组 # groupadd -r nginx # useradd -r -g nginx -s /bin/false -M nginx 2)建立安装nginx要用到的临时文件目录 #mkdir -p/var/tmp/nginx/proxy 4,Nginx安装 1)下载nginx-1.9.2.tar.gz,上传至/root目录。 # cd ~ # tar –xvf nginx-1.9.2.tar.gz # cd nginx-1.9.2

如何验证nginx配置文件是否正确

资源分享编程语言web前端web服务器操作系统数据库应用0 柳明的博客 资源在于分享,技术在于交流 上午好! 2013年3月21日 星期四手机号: 归属地: 运营商、地区面 值: 100元 50元 其他 30元售 价: 98元-99.6元手机充值现在的位置: 首页 > web服务器 > nginx > 正文 RSS 小 中 大 上篇 下篇 如何验证nginx配置文件是否正确 2012年11月28日 ? nginx , web服务器 ? 共 3904字 ? 暂无评论 ? 被围观 1,840 views+ 当我们进行nginx 配置文件的时候如何才能检测我们做的是否正确呢?其实很简单,下面就向大家介 绍有关nginx 配置文件正确与否的检测方法。希望大家在以后的使用中有所收获。 检测nginx配置文件是否正确: 1. /usr/local/nginx/sbin/nginx -t -c nginx.conf 2. -c 配置文件路径 3. -g Set global directives. (version >=0.7.4)

4. -t 检测文件是否正确不执行 5. -v Print version. 6. -V Print nginx version, compiler version and configure 7. parameters. 编译时如果使用了–with-debug编译,还可以使用error_log file [ debug_core| debug_http | debug_event …] 来获得debug信息 通过信号对 Nginx配置文件 进行控制,Nginx配置文件 支持下表中的信号: 信号名 作用描述 TERM, INT 快速关闭程序,中止当前正在处理的请求 QUIT 处理完当前请求后,关闭程序 HUP 重新加载配置,并开启新的工作进程,关闭就的进程,此操作不会中断请求 USR1 重新打开日志文件,用于切换日志,例如每天生成一个新的日志文件 USR2 平滑升级可执行程序 WINCH 从容关闭工作进程 有两种方式来通过这些信号去控制 Nginx配置文件,第一是通过 logs 目录下的 nginx.pid 查看当前运行的 Nginx 的进程 ID,通过 kill – XXX来控制 Nginx,其中 XXX 就是上表中列出的信号名。如果您的系统中只有一个 Nginx 进程,那您也可以通过 killall 命令来完成,例如运行 killall – s HUP nginx 来让 Nginx 重新加载配置。 配置: 1. use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; 2. FreeBSD使用kqueue,Linux选epoll. 3. worker_connections number 每个worker的最大连接数 4. Maxclient = work_processes * worker_connections

nginx配置详解

Nginx配置文件nginx.conf中文详解(总结) 2012-12-16 14:56:38 我来说两句 收藏我要投稿 PS:Nginx使用有两三年了,现在经常碰到有新用户问一些很基本的问题,我也没时间一一回答,今天下午花了点时间,结合自己的使用经验,把Nginx的主要配置参数说明分享一下,也参考了一些网络的内容,这篇是目前最完整的Nginx配置参数中文说明了。更详细的模块参数请参考:https://www.360docs.net/doc/cb4297873.html,/Main #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log ar/loginx/error.log info; #进程文件 pid ar/runinx.pid; #一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(系统的值ulimit -n)与nginx进程数相除,但是nginx分配请求并不均匀,所以建议与ulimit -n 的值保持一致。 worker_rlimit_nofile 65535; #工作模式与连接数上限 events { #参考事件模型,use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; epoll 模型是Linux 2.6以上版本内核中的高性能网络I/O模型,如果跑在FreeBSD上面,就用kqueue模型。 use epoll; #单个进程最大连接数(最大连接数=连接数*进程数)

nginx反向代理批量实现https协议访问

nginx反向代理批量实现https协议访问 来源:转载 我们进入大多数HTTPS网站ie浏览器都会给出相关提醒了,但我配置了一台HTTPS代理机器发现css与js都加载不了,这个有朋友说是https页面,如果加载http协议的内容,会被认为页面不安全,所以就会弹出提醒框了。 HTTPS是什么 HTTPS(全称:Hypertext Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。htt ps:URL表明它使用了HTTP,但HTTPS 存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面 解决办法 sever{ listen 80; sever_name www.你的域名.net; root /home/webroot/www/; index index.php index.html; # ... } sever{ listen 80; sever_nameimg.你的域名.net; root /home/webroot/img/; index index.php index.html; # ... } sever{

listen 80; sever_name static.你的域名.net; root /home/webroot/static/; index index.php index.html; # ... } sever{ listen 80; sever_name upload.你的域名.net; root /home/webroot/upload/; index index.php index.html; # ... } server { listen 443; server_name www.你的域名.net img.你的域名.net static.你的域名.net upload.你的域名.net; ssl on; ssl_certificate /usr/local/nginx/conf/你的域名.net.crt; ssl_certificate_key /usr/local/nginx/conf/你的域名.net.key; location /{ proxy_pass http://127.0.0.1:80; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header Host $host; proxy_set_header SSL '1'; proxy_redirect http:// https://; } } 这样配置好,访问:

nginx反向代理配置

nginx反向代理配置 前言: 由于服务器apache抗不住目前的并发.加上前端squid配置后,问题依然无法解决.而页面程序大部分是动态.无法使用fastcgi来处理.因此想使用nginx做为反向代理apache.整个配置安装过程很简单.在考虑高并发的情况下,在安装前就做了些优化.目前配置能抗住3000以上并发.好像不是特别大哦?呵~~ 但足以~~ 只是还有少量499问题..期待有人跟我讨论解决 第1部分:安装 1 建立用户及组 /usr/sbin/groupadd www /usr/sbin/useradd -g www www 2 安装pcre 让nginx支持rewrite 方便以后所需 wget ftp://https://www.360docs.net/doc/cb4297873.html,/pub/software/programming/pcre/pcre-7.8.tar.gz tar zxvf pcre-7.8.tar.gz cd pcre-7.8/ ./configure make && make install 3 安装nginx wget http://sysoev.ru/nginx/nginx-0.7.58.tar.gz tar zxvf nginx-0.7.58.tar.gz cd nginx-0.7.58/ ./configure --user=www --group=www --prefix=/usr/local/webserver/nginx --wi th-http_stub_status_module --with-http_ssl_module --with-cc-opt='-O2' --with-c pu-opt=opteron make && make install #注意上文中的--with-cc-opt='-O2' --with-cpu-opt=opteron 这是编译器优化,目前最常用的是-02 而不是3.后面对应CPU的型号,可参照:http://wiki.gentoo.tw/index.php/HO WTO_CFLAG 第2部分:配置及优化配置文件 1 nginx.conf 配置文件: user www www; worker_processes 4; # [ debug | info | notice | warn | error | crit ] error_log /usr/local/webserver/nginx/logs/nginx_error.log crit; pid /usr/local/webserver/nginx/nginx.pid;

Nginx反向代理和前端全缓存相关配置教程

Nginx反向代理和前端全缓存相关配置教程 最近一直在研究这方面的配置,只是脚本比较复杂。在网上用力找了几天,主要教程还是那些东西。并且有点乱七八糟,笔者进行了一些整理。告诉你最简单的方法,来实现这二个方面的内容: 1.nginx最简单的反向代理脚本 2.nginx最简单的前端缓存反向代理脚本 3.只提供简单应用,自动更新等操作不讲解 4.最简单的脚本,容易学会到渣 切记:配置完成后,需要刷新nginx配置,以下2条命令都可以: /root/lnmp reload /etc/init.d/nginx reload 一、最简单的反向代理脚本(只要修改2个网址,存成conf文件放置于vhost 下): server { listen 80; server_name https://www.360docs.net/doc/cb4297873.html,; location / { proxy_pass /; proxy_redirect off; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } } 二、最简单的前端全缓存,反向代理脚本 #新建2个目录,放置缓存文件: mkdir /home/cache/path -p mkdir /home/cache/temp -p 修改/usr/local/nginx/conf/nginx.conf 新增以下代码,主要是缓存相关设置,请放置于http{ ##这里} 中,一般加在log_format 上面或下面均可: client_body_buffer_size 512k; proxy_connect_timeout 5; proxy_read_timeout 60; proxy_send_timeout 5; proxy_buffer_size 16k; proxy_buffers 4 64k; proxy_busy_buffers_size 128k; proxy_temp_file_write_size 128k; proxy_temp_path /home/cache/temp; proxy_cache_path /home/cache/path levels=1:2 keys_zone=cache_one:500m inactive=7d max_size=30g; #500m是内存占用,7d是7天无访问删除,30g是缓存占具硬盘空间 以下为虚拟主机配置文件,可另存成.conf 放置于vhost 下面:

相关文档
最新文档