编译安装Nginx及基础配置

面向新手的nginx简单部署

Posted by     BY   杨晓明 on September 11, 2017

一、环境准备

点击这里访问nginx官网

mkdir -p /data/tools
cd /data/tools
wget  http://nginx.org/download/nginx-1.10.3.tar.gz	#下载nginx
yum install pcre-devel openssl-devel -y			#下载依赖包:pcre(语言兼容的正则表达式),openssl(https)
rpm -qa |egrep "pcre|openssl"
useradd -s /sbin/nologin -M www				#添加www用户

二、编译安装

  • ./configure (配置 编译参数) make(编译) make install(复制 创建目录 文件 )
tar xf nginx-1.10.3.tar.gz
cd nginx-1.10.3
./configure --prefix=/application/nginx-1.10.3 --user=www --group=www  --with-http_stub_status_module  --with-http_ssl_module				
#--with-http_stub_status_module    nginx的状态模块
#--with-http_ssl_module            nginx支持https的模块
make
make install
#每一步可以通过echo $?检查运行结果

三、启动nginx

ln -s /application/nginx-1.10.3/ /application/nginx	#创建软连接
/application/nginx/sbin/nginx				#启动nginx
lsof -i:80						#检查Nginx的默认80端口

四、Nginx常用功能配置

1.规范化配置文件,基于域名的虚拟主机

mkdir -p /application/nginx/html/blog			#创建blog站点
mkdir -p /application/nginx/conf/extra			#此目录存放站点配置文件
cd /application/nginx/conf/extra
touch blog.conf						#创建blog站点配置文件
  • 编辑blog站点配置文件blog.conf
cat >>/application/nginx/conf/extra/blog.conf<<EOF
server {
	listen       80;
	server_name  blog.xmy.com;
	location / {
		root   html/blog;
		index  index.html index.htm;
	}
}
EOF
  • 单个域名配置文件编辑完成后;编辑nginx主配置文件nginx.conf
cat >>/application/nginx/conf/nginx.conf<<EOF
worker_processes  1;
events {
	worker_connections  1024;
}
http {
	include       mime.types;
	default_type  application/octet-stream;
	sendfile        on;
	keepalive_timeout  65;
	include extra/blog.conf;
}
EOF

2.状态信息功能

  • 编辑/application/nginx/conf/extra/status.conf
    touch /application/nginx/conf/extra/status.conf
    cat >>/application/nginx/conf/extra/status.conf<<EOF
    server{
      listen  80;
      server_name  status.yxmblog.top;
      location / {
          stub_status on;      #开启nginx状态信息 
          access_log   off;    #不记录访问日志。
      }
    }
    
  • 同上,在nginx.confinclude extra/status.conf
  • 检查语法:/application/nginx/sbin/nginx -t;
  • 重启nginx:/application/nginx/sbin/nginx -s reload
  • 即可访问:curl status.yxmblog.top得到状态信息。

(1).状态信息解释

	Active connections: 3          #表示Nginx正在处理的活动连接数3个。
	server accepts handled requests
	40 40 30 
	#server            表示Nginx启动到现在共处理了 40 个连接
	#accepts           表示Nginx启动到现在共成功创建 40 次握手
	#handled requests  表示总共处理了 30 次请求
	#请求丢失数 = 握手数 - 连接数 ,可以看出目前为止没有丢失请求
	Reading: 0 Writing: 1 Waiting: 2 
	#Reading:Nginx     读取到客户端的 Header 信息数
	#Writing:Nginx     返回给客户端 Header 信息数
	#Waiting:Nginx     已经处理完正在等候下一次请求指令的驻留链接(开启keep-alive的情况下,这个值等于 Active - (Reading+Writing))

3.nginx访问日志(access_log)

(1).规定一个日志格式

log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
				  '$status $body_bytes_sent "$http_referer"'
				  '"$http_user_agent" "$http_x_forwarded_for"';

(2).使用日志格式

access_log  logs/access.log  main;

(3).配置文件

/application/nginx/conf/nginx.conf

worker_processes  1;
events {
	worker_connections  1024;
}
http {
	include       mime.types;
	default_type  application/octet-stream;
	sendfile        on;
	keepalive_timeout  65;
	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  main;
			    include extra/blog.conf;
			    include extra/status.conf;
}

(4).nginx日志 常用变量

变量 意义
$http_x_forwarded_for 客户端IP地址
$remote_addr 客户端IP地址
$remote_user 用户名称(和实际所采用的认证方式有关)
$time_local 访问时间以及用户所在时区
$request URL以及HTTP协议版本
$status 回送给客户端的HTTP状态码,如200,302,304,404,500等
$body_bytes_sent 回送给客户端的数据的大小
$http_referer 用户是从哪个URL到达当前URL的。比如在一般的盗链技术中就使用的是该项请求头,当然这个是很容易就能模拟冒充的
$http_user_agent 用户所使用的浏览的相关信息

4.虚拟主机的别名设置

  • 编辑/application/nginx/conf/extra/www.conf
cat >>/application/nginx/conf/extra/www.conf<<EOF
server {
	   listen       80;
	   server_name  www.yxmblog.top yxmblog.top;
	   location / {
	              root   html/www;
                  index  index.html index.htm;
       }
}
EOF

5.nginx—location

(1).location匹配示例

location / {                      #默认情况和无路可走
    [ configuration B ]           #B
}
location /documents/ {            #uri里面有/documents
	[ configuration C ]       #C
}
location ^~ /images/ {            #^~不匹配正则,只匹配字符串,匹配images字符串
    [ configuration D ]           #D
}
location ~* \.(gif|jpg|jpeg)$ {   #~* 不区分大小写的正则匹配,以.gif或.jpg或.jpeg结尾
    [ configuration E ]           #E
}

6.nginx—rewrite

  • rewrite可实现,伪静态、跳转等功能
  • 以下配置可实现yxmblog.top自动跳转到www.yxmblog.top
server {
        listen       80;
        server_name  yxmblog.top;
        rewrite ^/(.*) http://www.yxmblog.top/$1 permanent;
   }
server {
        listen       80;
        server_name  www.yxmblog.top;
        location / {
            root   html/www;
            index  index.html index.htm;
        }
        access_log logs/access_www.log main ;
}

7.nginx的访问认证

(1).安装密码生成软件及创建密码文件

yum install httpd-tools -y
htpasswd -bc /application/nginx/conf/htpasswd xmy 123456
chmod 400 /application/nginx/conf/htpasswd     
chown www /application/nginx/conf/htpasswd

(2).修改配置文件blog.conf

  • 如下配置可实现访问status.yxmblog.top时,需要输入用户名密码认证
server{
    listen  80;
    server_name  status.yxmblog.top;
    location / {
      stub_status on;
      access_log   off;
      auth_basic           "login training";
      auth_basic_user_file /application/nginx/conf/htpasswd;
    }
}

五、打个rpm包

fpm -s dir -t rpm -n nginx -v 1.12.1 -d "pcre-devel,openssl-devel" --pre-install /server/scripts/before_nginx_rpm.sh --post-install /server/scripts/after_nginx_rpm.sh -f /application/nginx-1.12.1/