Nginx服务器初期基本配置指南_nginx

一、准备
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安装路径在其它位置,请对应修改!
然后赋予这个文件执行权限:

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


四、基本配置
完成上述工作后,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;
  }

引用

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

八、Nginx负载均衡
在http{...}中配置一个upstream{...},参考如下:
引用

 upstream tomcat {
  server 10.11.155.26:8080;
  server 10.11.155.41:8080;
 } 

接着修改location节点,配置代理:
引用

location / {
  ...
   proxy_pass http://tomcat; 

  ...
}

当访问根路径时,会轮播路由到两台服务器上,至于后端服务器是tomcat还是jetty之类的,都无所谓,照葫芦画瓢就是了。
当然,有的机器性能好,或者负载低,可以承担高负荷访问量,可以通过权重(weight),提升访问频率。数值越高,被分配到的请求数越多。
server指令参数如下:
weight——权重,数值越大,分得的请求数就越多,默认值为1。
max_fails——对访问失败的后端服务器尝试访问的次数。默认值为1,当设置为0时将关闭检查。
fail_timeout——失效超时时间,当多次访问失败后,对该节点暂停访问。
down——标记服务器为永久离线状态,用于ip_hash指令。
backup——仅当非backup服务器全部宕机或繁忙时启用。

例如,可以这样配置:
引用

 upstream tomcat {
  server 10.11.155.26:8080 weight=5;
  server 10.11.155.41:8080 weight=10;
 } 

后者分得的请求数就会较高。

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索nginx
, 配置
nginx配置
nginx流媒体服务器、nginx 图片服务器、nginx 文件服务器、nginx服务器搭建、nginx 静态文件服务器,以便于您获取更多的相关知识。

时间: 2024-09-15 23:53:24

Nginx服务器初期基本配置指南_nginx的相关文章

简介Nginx服务器的Websockets配置方法_nginx

Nginx 1.3.13 已经发布了,该版本支持 Connection: upgrade 和 Upgrade 头,这就意味着支持WebSocket代理了.很多人都在等这个新特性以至于 "Nginx 支持 websockets 吗?" 成为了 freenode上的#nginx频道最常问的问题. 有了这种方式,让我们来看看Nginx的WebSocket实现.Nginx新添加的Websockets配置指令 文档中提到的配置如下:(译者注:原文中的链接其实不是文档的链接.现在nginx的官方文

nginx svn htt协议-使用nginx服务器, 怎么配置nginx让svn使用http协议

问题描述 使用nginx服务器, 怎么配置nginx让svn使用http协议 情况是这样:我搭建了一个LNMP服务器和svn服务器.在svn使用svn://协议没问题. 但是我想使用http协议,nignx应该怎么配置?还是说要通过apcache,然后nginx配置 反代理服务器? 解决方案 CentOS下搭建NGINX+SVN

Linux下Tomcat+Nginx服务器环境安装配置的简明教程_nginx

一.安装 1.安装JDK下载的jdk文件为:jdk-6u45-linux-x64.bin,执行如下命令进行安装: #./jdk-6u12-linux-i586.bin 2.安装tomcat: #tar zxvf apache-tomcat-6.0.18.tar.gz #mv apache-tomcat-6.0.29 tomcat 这里我将解压后的apache-tomcat-6.0.29重命名为了tomcat方便操作. 3.配置环境变量:编辑/etc下的profile文件,加上如下内容: JAVA

通过lua来配置实现Nginx服务器的防盗链功能_nginx

下载服务器时常被人盗链,时间久了导致服务器大量资源浪费,由于服务器使用nginx做为web服务器.nginx的防盗链方法有很多,可以使用现成的防盗链模块nginx-accesskey-2.0.3,编译ningx时添加此模块即可. 由于服务其他业务需要,所以nginx编译了lua模块,所以就想通过lua来实现下载服务器的防盗链功能(通过lua的Nginx模块lua_nginx_module.这里不再详细介绍配置过程),这样就可以免去了accesskey模块.原理就是生成经过处理过的下载链接,然后下

在Nginx服务器上安装配置博客程序Typecho的教程_nginx

typecho比wordpress更轻,更专注于写的享受. 现在大多的虚拟机运行环境都是lnmp,安装教程安装typecho可能会遇到404,数据配置错误问题. 把这两天安装typecho的步骤写下来给大家参考. typecho安装方法 1.下载 #网站目录 cd /usr/local/nginx/html/ wget https://github.com/typecho/typecho/releases/download/v0.9-13.12.12-release/0.9.13.12.12.-

Nginx图片防盗链配置实例_nginx

做运维的朋友经常会有一些烦恼,比如网站总是被人抄袭,比如网站总是被人引用上面的图片,虽然一张图两张图,并不耗费很多流量,但一旦引用的人多了,这个还是比较废流量的. 防盗链就是禁止其他网站引用自己网站资源而做的一系列设置,优点就不需要说了,绝多数就是防止资源浪费,特别是有宽带.流量限制的空间如果不做一些 限制可能就光引用自己网站图片.视频等等资源可能会消耗很大一部分流量.本文就简单的说一下在nginx服务器上如何做防盗链设置. nginx防盗链代码 第1步:下载nginx网站配置文件. 有些网友可

一个等号引发的血案(谈Nginx正确的404配置)_nginx

这是一个血淋淋的教训,这么说一点也不过分.因为最近发生了一个重大问题,网站流量大幅下跌,跌了近80%了.由于事件发生之前做过一些工作,加了大量友链,而且外站权重都相当高,在那天还发生了一次挂马事件,当然也即时解决了.还做了其它一些关键字内.外链优化等等.这样使得查找问题的原因就变的难上加难.偶然的原因发现,百度收录的链接开始出现错误,由于网站URL方式采用的目录式结构,最后一个字符都是/,然而百度收录的页面却无缘无故把这个线去掉了,而这种访问方式,我并没有做兼容.当时也查看了网站页面上的重写结果

linux下Nginx+Tomcat负载均衡配置方法_nginx

Nginx+tomcat是目前主流的java web架构,如何让nginx+tomcat同时工作呢,也可以说如何使用nginx来反向代理tomcat后端均衡呢?直接安装配置如下: 1.JAVA JDK安装: #下载相应的jdk软件包,然后解压安装,我这里包名称为:jdk-7u25-linux-x64.tar.gz tar -xzf jdk-7u25-linux-x64.tar.gz ;mkdir -p /usr/java/ ;mv jdk1.7.0_25/ /usr/java/ 下. #然后配置

nginx中path模式配置示例_nginx

nginx服务器默认是不支持pathinfo模式的,即类似index.php/index形式的url会提示404.在这里,需要对nginx配置文件中需要开启pathinfo模式的server予以修改配置,修改nginx.conf文件如下: 复制代码 代码如下: server{  server_name   blog.com;  listen        80;  root          /home/wwwroot/blog;  index         index.php index.h