- 浏览: 4382398 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (163)
- 职场 && 心情 (22)
- Java/Basic (17)
- Java/Compression (7)
- Java/Security (20)
- Java/Maven (3)
- Java/Cache (11)
- Eclipse (4)
- Spring (19)
- ORM/Hibernate (2)
- ORM/iBatis (3)
- DB/NoSQL (11)
- DB/MySQL (7)
- DB/MS SQL Server (4)
- OS/Linux (11)
- OS/Mac (7)
- C/C++ (4)
- Server Architecture/Basic (13)
- Server Architecture/Distributed (17)
- Moblie/Andriod (2)
- WebService (3)
- Objective-C (1)
- Html (1)
- 设计模式 (1)
- Scala (0)
- Kafka (1)
最新评论
-
w47_csdn:
证书安装:在"浏览"选项中选择" ...
Java加密技术(九)——初探SSL -
w47_csdn:
spiritfrog 写道你好,我按照你的步骤,tomcat中 ...
Java加密技术(九)——初探SSL -
liuyachao111:
11楼说的对 用@ControllerAdvicepublic ...
Spring 注解学习手札(八)补遗——@ExceptionHandler -
irayslu:
作者你好, 我把你的源码放在jdk6, jdk7 中运行正常, ...
Java加密技术(五)——非对称加密算法的由来DH -
夏季浅忆-卖小子:
为什么不能解压rar格式的压缩包呢
Java压缩技术(三) ZIP解压缩——Java原生实现
赶上要配置测试服务器,赶上Nginx-1.2.0 stable version释放,正好重新配置一下Nginx!
相关内容:
征服 Apache + SSL
征服 Apache + SVN
征服 Apache + SVN + LDAP
征服 Apache + Tomcat
征服 Nginx
征服 Nginx + Tomcat
一、准备工作
下载如下组件:
pcre,有关正则表达式匹配;zlib,用于压缩。这些就不细说了,如果要安装最简版的nginx,记得准备好这两样东西就好了。
用root账户启动服务是比较危险的! 前段时间,测试服务器被黑掉了,终归到底是通过一个root启动的服务上传了木马,最后连ssh都屏蔽了,活生生成为一台肉鸡。。。
所以,惨痛的经验告诉我,一定要为服务建立对应的组和用户,限制访问权限,降低风险!
这里为nginx建立一个www组,并建立一个不登录的账户nginx:
建立一个目录用于存放nginx日志文件,并赋予相应权限:
二、编译安装
我把pcre、zlib、nginx的压缩包都放在了/opt/software路径下,服务要装在/opt/servers路径下。
先对pcre、zlib、nginx解压,然后编译安装:
三、系统配置
我希望nginx可以作为一个服务,通过service命令启动或停止。
这样做的好处是,不论我用什么用户调用这个service命令,都不会因为使用错误的账户带来安全问题。
建立一个系统文件:
前人栽树,后人乘凉。已经有老鸟做好了启动配置文件:
注意,这里的路径:
如果你的nginx安装路径在其它位置,请对应修改!
然后赋予这个文件执行权限:
追加为系统服务:
现在就可以使用,如下命令控制nginx服务了!
三、vim语法支持
vim对于nginx配置文件的支持不那么友好,无法对关键字高亮显示。
不过,没关系。我们可以通过修改~/.vim配置,增强vim功能。
参考vim for nginx 配置VIM语法高亮及自动缩进
可能你的用户目录下并没有.vim这个目录,需要自行建立。
建立针对nginx的配置文件,这里的nginx配置文件的路径是/opt/servers/nginx/conf,注意对应修改:
最后,请出主角(下载的是本文的附件 ):
这样就ok了!
四、基本配置
完成上述工作后,nginx还不能急于投入使用,需要做一些基本配置与优化工作。
修改nginx配置文件:
微调
#使用的用户和组,这里我们为nginx服务新建了nginx账户和www工作组
user nginx www;
#制定的工作衍生进程数(2倍于CPU内核数)
worker_processes 4;
#错误日志存放路径,日志级别由低到高[debug | info | notice | warn | error | crit]
error_log /var/log/nginx/error.log crit;
#指定文件描述符数量 与ulimit -n数值保持一致
work_rlimit_nofile 65535;
events {
#使用的网络I/O模型,Linux用epoll模型,Unix用kqueue模型
use epoll;
#允许的连接数
worker_connections 51200;
}
http{
include mime.types;
default_type application/octet-stream;
#追加 '"$sent_http_cache_control" "$sent_http_pl" "$request_time"'获取请求细节信息
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$sent_http_cache_control""$sent_http_pl" "$request_time"';
access_log /var/log/nginx/access.log main;
...
server{
...
location / {
root html;
index index.html index.htm index.jsp index.do;
#在header中传递请求放host、ip等信息
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_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
...
}
}
}
五、虚拟目录
nginx配置虚拟目录很简单,主要是运用root、alias两个指令。
以访问图片服务为例:
root,用于相对路径
location /image/ {
root /data;
}
当我们访问“/image/”路径时,实际上访问的是“/data/image/”,注意“/data”后面不要有“/”
alias,用于绝对路径
location /image/ {
alias /data/img/;
}
当我们访问“/image/”路径时,实际上访问的是“/data/img/”,注意“/data/img/”以“/”结尾。
六、重定向
有时候链接不加考虑就放出去了,突然哪天需要调整,又不能及时撤回已放出的链接地址。只好自己修改nginx配置。
譬如,放出去的链接:/activity.do?m=v 想让它指到/路径上:
想要把请求来的参数也带上:
$1指得是第一个参数,以此类推。
六、监控
Active connections: 14
server accepts handled requests
62 62 302
Reading: 0 Writing: 3 Waiting: 11
七、日志分割
赋予执行权限
凌晨执行
相关内容:
征服 Apache + SSL
征服 Apache + SVN
征服 Apache + SVN + LDAP
征服 Apache + Tomcat
征服 Nginx
征服 Nginx + Tomcat
[url=http://code.google.com/p/nginx-auth-ldap/downloads/detail?name=ngx_http_auth_ldap_module-1.0-a3.tar.gz&can=1&q=][/url]
在家里改帖子,突然样式发生了问题,一个一个改,还是有漏网之鱼。 这就重新修改~
搞定!
在家里改帖子,突然样式发生了问题,一个一个改,还是有漏网之鱼。 这就重新修改~
相关内容:
征服 Apache + SSL
征服 Apache + SVN
征服 Apache + SVN + LDAP
征服 Apache + Tomcat
征服 Nginx
征服 Nginx + Tomcat
一、准备工作
下载如下组件:
pcre,有关正则表达式匹配;zlib,用于压缩。这些就不细说了,如果要安装最简版的nginx,记得准备好这两样东西就好了。
用root账户启动服务是比较危险的! 前段时间,测试服务器被黑掉了,终归到底是通过一个root启动的服务上传了木马,最后连ssh都屏蔽了,活生生成为一台肉鸡。。。
所以,惨痛的经验告诉我,一定要为服务建立对应的组和用户,限制访问权限,降低风险!
这里为nginx建立一个www组,并建立一个不登录的账户nginx:
#追加一个www组 groupadd -f www #追加一个nginx用户 useradd -s /sbin/nologin -g www nginx
建立一个目录用于存放nginx日志文件,并赋予相应权限:
#建立nginx日志目录 mkdir /var/log/nginx #赋予访问权限 chown nginx.www /var/log/nginx
二、编译安装
我把pcre、zlib、nginx的压缩包都放在了/opt/software路径下,服务要装在/opt/servers路径下。
先对pcre、zlib、nginx解压,然后编译安装:
./configure --prefix=/opt/servers/nginx \ --user=nginx \ --group=www \ --pid-path=/var/run/nginx.pid \ --error-log-path=/var/log/nginx/error.log \ --http-log-path=/var/log/nginx/access.log \ --with-pcre=/opt/software/pcre-8.10 \ --with-zlib=/opt/software/zlib-1.2.5 \ --with-http_stub_status_module \ --with-http_realip_module \ --with-http_gzip_static_module \ --without-http_fastcgi_module \ --without-http_memcached_module \ --without-http_map_module \ --without-http_geo_module \ --without-http_autoindex_module \ --with-poll_module && make && make install
三、系统配置
我希望nginx可以作为一个服务,通过service命令启动或停止。
这样做的好处是,不论我用什么用户调用这个service命令,都不会因为使用错误的账户带来安全问题。
建立一个系统文件:
vim /etc/init.d/nginx
前人栽树,后人乘凉。已经有老鸟做好了启动配置文件:
#!/bin/bash # v.0.0.1 # create by jackbillow at 2007.10.15 # nginx - This shell script takes care of starting and stopping nginx. # # chkconfig: - 60 50 # description: nginx [engine x] is light http web/proxy server # that answers incoming ftp service requests. # processname: nginx # config: /etc/nginx.conf nginx_path="/opt/servers/nginx" nginx_pid="/var/run/nginx.pid" # Source function library. . /etc/rc.d/init.d/functions # Source networking configuration. . /etc/sysconfig/network # Check that networking is up. [ ${NETWORKING} = "no" ] && exit 0 [ -x $nginx_path/sbin/nginx ] || exit 0 RETVAL=0 prog="nginx" start() { # Start daemons. if [ -e $nginx_pid -a ! -z $nginx_pid ];then echo "nginx already running...." exit 1 fi if [ -e $nginx_path/conf/nginx.conf ];then echo -n $"Starting $prog: " $nginx_path/sbin/nginx -c $nginx_path/conf/nginx.conf & RETVAL=$? [ $RETVAL -eq 0 ] && { touch /var/lock/subsys/$prog success $"$prog" } echo else RETVAL=1 fi return $RETVAL } # Stop daemons. stop() { echo -n $"Stopping $prog: " killproc -d 10 $nigx_path/sbin/nginx RETVAL=$? echo [ $RETVAL = 0 ] && rm -f $nginx_pid /var/lock/subsys/$prog } # See how we were called. case "$1" in start) start ;; stop) stop ;; restart) stop start ;; status) status $prog RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|status}" exit 1 esac exit $RETVAL
注意,这里的路径:
引用
nginx_path="/opt/servers/nginx"
nginx_pid="/var/run/nginx.pid"
nginx_pid="/var/run/nginx.pid"
如果你的nginx安装路径在其它位置,请对应修改!
然后赋予这个文件执行权限:
chmod +x /etc/init.d/nginx
追加为系统服务:
chkconfig --add nginx chkconfig nginx on
现在就可以使用,如下命令控制nginx服务了!
引用
#启动nginx
service nginx start
#停止nginx
service nginx stop
#重启nginx
service nginx restart
#查看nginx状态
service nginx status
service nginx start
#停止nginx
service nginx stop
#重启nginx
service nginx restart
#查看nginx状态
service nginx status
三、vim语法支持
vim对于nginx配置文件的支持不那么友好,无法对关键字高亮显示。
不过,没关系。我们可以通过修改~/.vim配置,增强vim功能。
参考vim for nginx 配置VIM语法高亮及自动缩进
可能你的用户目录下并没有.vim这个目录,需要自行建立。
mkdir ~/.vim mkdir ~/.vim/syntax
建立针对nginx的配置文件,这里的nginx配置文件的路径是/opt/servers/nginx/conf,注意对应修改:
echo 'au BufRead,BufNewFile /opt/servers/nginx/conf/* set ft=nginx' > ~/.vim/filetype.vim
最后,请出主角(下载的是本文的附件 ):
wget http://dl.iteye.com/topics/download/7979de38-1263-3b65-8f7a-e5f567d40fec unzip nginx.zip mv nginx.vim ~/.vim/syntax/
这样就ok了!
四、基本配置
完成上述工作后,nginx还不能急于投入使用,需要做一些基本配置与优化工作。
修改nginx配置文件:
vim /opt/servers/nginx/conf/nginx.conf
微调
引用
#使用的用户和组,这里我们为nginx服务新建了nginx账户和www工作组
user nginx www;
#制定的工作衍生进程数(2倍于CPU内核数)
worker_processes 4;
#错误日志存放路径,日志级别由低到高[debug | info | notice | warn | error | crit]
error_log /var/log/nginx/error.log crit;
#指定文件描述符数量 与ulimit -n数值保持一致
work_rlimit_nofile 65535;
events {
#使用的网络I/O模型,Linux用epoll模型,Unix用kqueue模型
use epoll;
#允许的连接数
worker_connections 51200;
}
http{
include mime.types;
default_type application/octet-stream;
#追加 '"$sent_http_cache_control" "$sent_http_pl" "$request_time"'获取请求细节信息
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"'
'"$sent_http_cache_control""$sent_http_pl" "$request_time"';
access_log /var/log/nginx/access.log main;
...
server{
...
location / {
root html;
index index.html index.htm index.jsp index.do;
#在header中传递请求放host、ip等信息
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_pass_header Content-Type;
proxy_pass_header Content-Disposition;
proxy_pass_header Content-Length;
...
}
}
}
五、虚拟目录
nginx配置虚拟目录很简单,主要是运用root、alias两个指令。
以访问图片服务为例:
root,用于相对路径
引用
location /image/ {
root /data;
}
当我们访问“/image/”路径时,实际上访问的是“/data/image/”,注意“/data”后面不要有“/”
alias,用于绝对路径
引用
location /image/ {
alias /data/img/;
}
当我们访问“/image/”路径时,实际上访问的是“/data/img/”,注意“/data/img/”以“/”结尾。
六、重定向
有时候链接不加考虑就放出去了,突然哪天需要调整,又不能及时撤回已放出的链接地址。只好自己修改nginx配置。
譬如,放出去的链接:/activity.do?m=v 想让它指到/路径上:
引用
rewrite ^/activity(.*)$ / last;
想要把请求来的参数也带上:
引用
rewrite ^/activity(.*)$ /$1 last;
$1指得是第一个参数,以此类推。
六、监控
引用
location /status {
stub_status on;
access_log off;
allow 10.10.0.0/16;
allow 10.1.0.0/16;
allow 10.11.0.0/16;
deny all;
}
stub_status on;
access_log off;
allow 10.10.0.0/16;
allow 10.1.0.0/16;
allow 10.11.0.0/16;
deny all;
}
引用
Active connections: 14
server accepts handled requests
62 62 302
Reading: 0 Writing: 3 Waiting: 11
七、日志分割
#!/bin/bash # THis script run at 00:00 # author dongliang at 2012-09-07 # Nginx Log Path logs_path="/var/log/nginx/" # Nginx PID Path nginx_pid="/var/run/nginx.pid" mkdir -p ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/ mv ${logs_path}access.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/access_$(date -d "yesterday" +"%Y%m% d").log mv ${logs_path}error.log ${logs_path}$(date -d "yesterday" +"%Y")/$(date -d "yesterday" +"%m")/error_$(date -d "yesterday" +"%Y%m%d" ).log kill -USR1 `cat $nginx_pid`
赋予执行权限
chmod +x nginx_log.sh
凌晨执行
crontab -e 0 0 * * * /opt/script/nginx_log.sh
相关内容:
征服 Apache + SSL
征服 Apache + SVN
征服 Apache + SVN + LDAP
征服 Apache + Tomcat
征服 Nginx
征服 Nginx + Tomcat
[url=http://code.google.com/p/nginx-auth-ldap/downloads/detail?name=ngx_http_auth_ldap_module-1.0-a3.tar.gz&can=1&q=][/url]
评论
4 楼
lection.yu
2012-05-31
辛苦了。。
3 楼
snowolf
2012-05-31
snowolf 写道
lection.yu 写道
多谢楼主的文章,给我帮助很大,让我在部署nginx上有了更加深刻的理解。又学习了许多linux上的小知识。
美中不足的是,创建nginx服务的脚本代码中,很多双引号使用了中文字符,着实困扰了我一阵子,我后来逐行调试才发现。。感谢上帝。。我只找了4,5行就出现了中文的引号。
美中不足的是,创建nginx服务的脚本代码中,很多双引号使用了中文字符,着实困扰了我一阵子,我后来逐行调试才发现。。感谢上帝。。我只找了4,5行就出现了中文的引号。
在家里改帖子,突然样式发生了问题,一个一个改,还是有漏网之鱼。 这就重新修改~
搞定!
2 楼
snowolf
2012-05-31
lection.yu 写道
多谢楼主的文章,给我帮助很大,让我在部署nginx上有了更加深刻的理解。又学习了许多linux上的小知识。
美中不足的是,创建nginx服务的脚本代码中,很多双引号使用了中文字符,着实困扰了我一阵子,我后来逐行调试才发现。。感谢上帝。。我只找了4,5行就出现了中文的引号。
美中不足的是,创建nginx服务的脚本代码中,很多双引号使用了中文字符,着实困扰了我一阵子,我后来逐行调试才发现。。感谢上帝。。我只找了4,5行就出现了中文的引号。
在家里改帖子,突然样式发生了问题,一个一个改,还是有漏网之鱼。 这就重新修改~
1 楼
lection.yu
2012-05-31
多谢楼主的文章,给我帮助很大,让我在部署nginx上有了更加深刻的理解。又学习了许多linux上的小知识。
美中不足的是,创建nginx服务的脚本代码中,很多双引号使用了中文字符,着实困扰了我一阵子,我后来逐行调试才发现。。感谢上帝。。我只找了4,5行就出现了中文的引号。
美中不足的是,创建nginx服务的脚本代码中,很多双引号使用了中文字符,着实困扰了我一阵子,我后来逐行调试才发现。。感谢上帝。。我只找了4,5行就出现了中文的引号。
发表评论
-
Thrift小记
2013-03-14 18:37 7786Thrit用的不多,也不够深入,这里小记一笔。 关于Th ... -
征服 Redis + Jedis + Spring (三)—— 列表操作
2013-03-06 16:16 83967一开始以为Spring下操 ... -
Nginx扩展(一):nginx_tcp_proxy_module
2013-01-15 16:41 20702好东西必须持续钻研,且持续积累,尤其要做个笔记。 今天是 ... -
Memcached笔记——(四)应对高并发攻击
2012-09-13 09:48 28935近半个月过得很痛苦,主要是产品上线后,引来无数机器用户恶意 ... -
征服 Redis + Jedis + Spring (二)—— 哈希表操作(HMGET HMSET)
2012-08-29 18:29 82320不得不说,用哈希操作来存对象,有点自讨苦吃! 不过,既然 ... -
征服 Redis + Jedis + Spring (一)—— 配置&常规操作(GET SET DEL)
2012-08-29 16:30 157467有日子没写博客了,真的是忙得要疯掉。 完成项目基础架构搭建 ... -
Redis集群服务器-高可用调研随笔
2012-08-22 22:24 28871今天改了一天的Bug,本 ... -
征服 Mongodb 之 安装与系统服务配置
2012-08-16 18:47 13589今天补点旧账,去年搭建系统时,曾想用Mongodb做 ... -
征服 Redis + Jedis
2012-08-15 17:49 83428用Memcached,对于缓存对象大小有要求,单个对象不得 ... -
征服 Redis
2012-08-13 17:05 86286大约一年多前,公司同事开始使用Redis,不清楚是配置,还是 ... -
征服 Kestrel + XMemcached + Spring TaskExecutor
2012-07-30 14:43 6207上一篇征服 Kestrel + XMemcached只是对Ke ... -
征服 Kestrel + XMemcached
2012-07-24 12:06 4675接上一篇 征服Kestrel,介绍XMemcached对于Ke ... -
征服 Kestrel
2012-07-23 18:33 13247因为要面对高并发PUSH需求,考虑将其按队列方式实现,最终选型 ... -
征服 Nginx + Tomcat
2012-05-24 17:35 267142年前一直折腾Apache,现如今更习惯Nginx。 搭建网站 ... -
Memcached笔记——(二)XMemcached&Spring集成
2012-04-01 09:55 42322今天研究Memcached的Java的Client,使用XMe ... -
Memcached笔记——(一)安装&常规错误&监控
2012-03-09 14:27 3548008年的时候接触过Memcached,当时还对它的客户端产品嗤 ... -
征服 Apache + Trac
2011-01-13 22:24 0其实,在使用Trac前,我一直在考虑使用,并已经使用jira很 ... -
征服Apache+SVN+Trac
2011-01-13 19:30 0sudo apt-get install trac lib ...
相关推荐
nginx 离线安装包nginx 离线安装包
nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源nginx镜像资源
Nginx安装包Nginx安装包
3.找到D:\nginx\conf下nginx.conf文件用记事本打开 在文段末尾大括号前加上 include proxy.conf;(就是加载刚刚新建的那个文件(注意路径)) 4.进入cmd 进入D盘: d: 进到nginx文件夹下:cd nginx 启动nginx.exe:...
nginx替代apache,nginx替代方案,nginx代替apache与jbos,nginx+jboss结合
Nginx 1.22.0 Linux 版本,解压安装。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型...
亲测好用.nginx-1.13.3,nginx1.13.3不存在信息泄漏漏洞安全稳定nginx版本,不存在漏洞 nginx-1.13.3 nginx1.13.3 安全稳定 nginx版本
nginx.conf nginx-1.20.1.tar.gz 这是关于centos8的nginx 和nginx 的配置https文件
nginx安装环境及nginx_1.18.0安装包,gcc、g++、pcre、zlib、nginx包
Nginx全能指南是一本介绍Nginx服务器的书,首先,简要介绍Nginx的基本概念和作用,如反向代理、负载均衡等。然后,列举Nginx的优点,如高性能、可扩展性、稳定性等。接着,介绍如何安装和配置Nginx,并提供一些实用...
nginx/Windows-1.23.1 Nginx(发音为“engine X”[9] /ˌɛndʒɪnˈɛks/ EN-jin-EKS),风格化为NGIИX,是一个Web服务器,也可以用作反向代理,负载平衡器,邮件代理和HTTP缓存。该软件由Igor Sysoev创建,并于...
此资源有两个文件,含 nginx-upstream-jvm-route 和 nginx 对应版本,都是tar.gz文件。 安装方法网上很多就不写了,亲测可用。 不用担心版本不匹配造成安装失败,再浪费积分去到处下载尝试的烦恼。 此资源有两个文件...
第1章 Nginx简介.pdf第2章 Nginx服务器的安装与配置.pdf第3章 Nginx的基本配置与优化.pdf第4章 Nginx与PHP(FastCGI)的安装、配置与优化.pdf第5章 Nginx与JSP、ASP.NET、Perl的安装与配置.pdf第6章 Nginx HTTP负载...
nginx命令参数用法详细介绍 nginx命令:启动nginx 在Windows上安装好nginx后,我们需要启动nginx服务,启动nginx服务的命令行操作主要有两种方式,即 C:/nginx-0.8.53>nginx.exe 或者 C:/nginx-0.8.53>start ...
Nginx入门到实践 Nginx 中间件Nginx入门到实践 Nginx 中间件
nginx1.21.5 nginx.conf配置文件
实战nginx.pdf。主要内容包括:第1章 Nginx简介;第2章Nginx服务器安装与配置;第3章Nginx基本配置与优化;第4章Nginx与PHP;第5章Nginx与JSP、ASP.NET..第6章Nginx http负载均衡和反向代理;第7章Nginx 的rewrite...
Nginx官网配置.pdf Nginx基本配置.pdf Nginx模块.pdf Nginx指南.pdf 第1章 Nginx简介.pdf 第2章 Nginx服务器的安装与配置.pdf 第3章 Nginx的基本配置与优化.pdf 第4章 Nginx与PHP(FastCGI)的安装、配置与优化.pdf 第...