nginx的编译安装


yum install -y vim lrzsz tree screen psmisc lsof tcpdump wget  ntpdate 
gcc gcc-c++ glibc glibc-devel pcre pcre-devel openssl  openssl-devel 
systemd-devel net-tools iotop bc  zip unzip zlib-devel bash-completion 
nfs-utils automake libxml2  libxml2-devel libxslt libxslt-devel perl
perl-ExtUtils-Embed

准备编译安装的基础环境:

官方源码包下载地址: https://nginx.org/download/
cd /usr/local/src/
进入此目录 将压缩包下载到此目录
wget https://nginx.org/download/nginx-1.12.2.tar.gz 
这边是直接从网站上下载过来的,如果事先准备好包 拖到此目录即可
tar xf nginx-1.12.2.tar.gz 
解压包
cd nginx-1.12.2/
进入包目录
 ./configure --prefix=/apps/nginx \--user=nginx  \--group=nginx \--with-http_ssl_module
 \--with-http_v2_module \--with-http_realip_module \--with-http_stub_status_module 
 \--with-http_gzip_static_module \--with-pcre \--with-stream \--with-stream_ssl_module
 \--with-stream_realip_module
这是我自己选择的一些nginx功能参数 ,根据自己需求可增删
make
编译开始
make install
创建目录,并将生成的模块和文件复制到相应的目录
useradd nginx -s /sbin/nologin -u 2000
创建一个 nginx 专用的系统账户

chown nginx.nginx -R /apps/nginx/
将自定义的 nginx 配置文件目录的所属组和所属主更改为 nginx
备注:nginx完成安装以后,有四个主要的目录:
conf:保存nginx所有的配置文件,其中nginx.conf是nginx服务器的核心主要的配置文件,其他的.conf 则是用来配置nginx相关的功能的,例如fastcgi功能使用的是fastcgi.conf和fastcgi_params两个文件, 配置文件一般都有个样板配置文件,是文件名.default结尾,使用的使用将其复制为并将default去掉即可。 
html:目录中保存了nginx服务器的web文件,但是可以更改为其他目录保存web文件,另外还有一个50x的web文件 是默认的错误页面提示页面。
logs:用来保存nginx服务器的访问日志错误日志等日志,logs目录可以放在其他路径,比 如/var/logs/nginx里面。 
sbin:保存nginx二进制启动脚本,可以接受不同的参数以实现不同的功能。
 /apps/nginx/sbin/nginx  -V 
 核对版本及编译参数是否与自己编写的一致
vim /usr/lib/systemd/system/nginx.service 
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
PIDFile=/apps/nginx/logs/nginx.pid
#Nginx will fail to start if /run/nginx.pid already exists but has the wrong
#SELinux context. This might happen when running `nginx -t` from the cmdline.
 https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /apps/nginx/logs/nginx.pid
ExecStartPre=/apps/nginx/sbin/nginx -t
ExecStart=/apps/nginx/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
#KillSignal=SIGQUIT
#TimeoutStopSec=5
KillMode=process
PrivateTmp=true

[Install]
WantedBy=multi-user.target
在此目录下编写nginx的自启动脚本
systemctl daemon-reload 
对于新创建的unit文件或,修改了的unit文件,要通知systemd重载此配置文件;
systemctl  start  nginx 
启动nginx服务
systemctl  enable  nginx 
设定开机自启nginx服务
 systemctl  status   nginx 
● nginx.service - The nginx HTTP and reverse proxy server 
  Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset:
 disabled)
   Active: active (running) since Mon 2019-02-18 11:11:38 CST; 10s ago 
 Main PID: 6348 (nginx) 
   CGroup: /system.slice/nginx.service 
           ├─6348 nginx: master process /apps/nginx/sbin/nginx
 查看nginx的启动状态  active(running)值为running  代表启动成功 

 Welcome to nginx!
 If you see this page, the nginx web server is successfully installed and 
 working. Further configuration is required.

 For online documentation and support please refer to nginx.org.
 Commercial support is available at nginx.com.

 Thank you for using nginx
 打开网页输入本机IP 测试nginx  web界面!

配置测试: 新建一个pc web站点

 测试之前在nginx的主配置文件的  keepalive_timeout  65;
 下面加入 include /apps/nginx/conf/conf.d/*.conf; 
 表示在conf/conf.d/目录下以.conf结尾的为子配置目录,方便实验的增删!
 由于是编译安装  所以 conf.d这个目录我们手动创建;mkdir  /apps/nginx/conf/conf.d
vim /apps/nginx/conf/conf.d/pc.conf 
 server {
  listen 80;
  server_name www.lvyao.com;
  location / {
    root /data/nginx/html/pc;
  }
}
 编写新建pc web站点的配置
 mkdir /data/nginx/html/pc -p

 创建配置对应web主页目录
 echo "pc web" > /data/nginx/html/pc/index.html 
 创建主页目录显示的 html 文件
在windows的C:\Windows\System32\drivers\etc
 hosts文件中加入DNS地址解析
本机IP                   自定义域名
172.22.143.132     www.lvyao.com
 systemctl reload nginx 
 重启服务 并通过域名进行测试访问

新建一个Mobile web站点:

vim /apps/nginx/conf/conf.d/mobile.confserver {
  listen 80;
  server_name mobile.lvyao.net;
  location / {
    root /data/nginx/html/mobile;
  }
}
编写新建mobile web站点的配置
mkdir /data/nginx/html/mobile  -p
创建配置对应web主页目录
echo "mobile web" >> /data/nginx/html/mobile/index.html
创建主页目录显示的 html 文件
在windows的C:\Windows\System32\drivers\etc
hosts文件中加入DNS地址解析
本机IP                  自定义域名
172.22.143.132    mobile.lvyao.net
systemctl reload nginx 
 重启服务 并通过域名进行测试访问

root与alias

指定web的家目录,在定义location的时候,文件的绝对路径等于 root+location,如

server {
  listen 80;
  server_name www.lvyao.com;
  location / {
    root /data/nginx/html/pc;
  }

  location /about {
    root /data/nginx/html/pc;
    index index.html;
  }
}
编写wep家目录指定的配置
mkdir  /data/nginx/html/pc/about
创建配置所对应的about文件

echo about > /data/nginx/html/pc/about/index.html
创建wep指定家目录主页显示的 html 文件

 重启Nginx并访问测试
alias:定义路径别名,会把访问的路径重新定义到其指定的路径,如:

vim /apps/nginx/conf/conf.d/alias.conf
server {
  listen 80;
  server_name www.lvyao.com;
  location / {
    root /data/nginx/html/pc;
  }

  location /about {  #使用alias的时候uri后面如果加了斜杠则下面的路径配置必须加斜杠,否则403
    alias /data/nginx/html/pc; #当访问about的时候,会显示alias定义的/data/nginx/html/pc
    里面的内容。 
    index index.html;
  }
}
编写alias的文件配置
  重启Nginx并访问测试