Linux-Centos7-nginx安装

版权声明:转载请注明出处。 https://blog.csdn.net/paopaohll/article/details/83964138

1. 安装依赖包

yum -y install gcc gcc-c++ autoconf automake libtool make cmake
yum -y install zlib zlib-devel openssl openssl-devel pcre-devel

2. 下载Nginx源码包并解压

wget -c http://nginx.org/download/nginx-1.10.3.tar.gz
tar -zxvf nginx-1.10.3.tar.gz

3. 新建nginx用户及用户组

useradd -s /sbin/nologin -M nginx # -s设置不允许登录,-M设置不建立家目录

4. 编译配置、编译、安装

./configure --help # 查看编译配置选项

./configure --prefix=/usr/local/nginx \  #  指定安装路径
--pid-path=/usr/local/nginx/run/nginx.pid \ #pid文件路径
--with-http_ssl_module \  # 指定ssl
--user=nginx \  # 指定用户
 --group=nginx \ #指定用户组
--with-pcre \ 
--without-mail_pop3_module \
--without-mail_imap_module \
--without-mail_smtp_module

make

make install

/usr/local/nginx/sbin/nginx -v # 安装后查看版本

cat /usr/local/nginx/conf/nginx.conf 

/usr/local/nginx/sbin/nginx -t  # 检查配置是否ok

5. 启动,停止,重启

nginx停止、重启
未添加nginx服务前对nginx的管理只能通过一下方式管理:
 **nginx 管理的几种方式 -启动Nginx** 
/usr/local/nginx/sbin/nginx 
从容停止Nginx:
kill -QUIT 主进程号 # 如上一步中的 ps 命令输出的 29151,就是 Nginx的主进程号
快速停止Nginx:
kill -TERM 主进程号
强制停止Nginx:
pkill -9 nginx
平滑重启nginx
/usr/nginx/sbin/nginx -s reload

nginx 信号管理

nginx -s signal

信号(signal)的值可能是以下之一:

  • stop - 快速关闭服务
  • quit - 正常关闭服务
  • reload - 重新加载配置文件
  • reopen - 重新打开日志文件
  • TERM, INT - 快速关闭
  • QUIT - 正常关闭
  • HUP - 改变配置,跟上改变的时区(仅适用于FreeBSD和Linux),使用新配置启动新的工作进程,正常关闭旧的工作进程
  • USR1 - 重新打开日志文件
  • USR2 - 升级可执行文件
  • WINCH - 正常关闭工作进程

6. firewall 添加80端口的访问策略

firewall-cmd --permanent --zone=public --add-port=80/tcp
firewall-cmd --reload # 使永久策略立即生效

7. 浏览器或者curl访问

curl ip地址:默认端80 

8. Nginx添加–with-http_stub_status_module

实现对Nginx运行的查看
ip/nginx_status
在配置文件添加以下内容:

location /nginx_status{
stub_status  on;
access_log    off;
}

在这里插入图片描述

Active connections: 当前nginx正在处理的活动连接数.
Server accepts handled requests request_time: nginx总共处理了3个连接,成功创建3 握手(证明中间没有失败的),总共处理了2 个请求,总共请求时间0。
Reading: nginx读取到客户端的Header信息数.
Writing: nginx返回给客户端的Header信息数.
Waiting: 开启keep-alive的情况下,这个值等于 active – (reading + writing),意思就是nginx已经处理完成,正在等候下一次请求指令的驻留连接。
所以,在访问效率高,请求很快被处理完毕的情况下,Waiting数比较多是正常的.如果reading +writing数较多,则说明并发访问量非常大,正在处理过程中。

9. 编译配置选项说明

使用configure命令配置构建。 它定义了系统的各个方面,包括允许使用nginx进行连接处理的方法。
最后它创建一个Makefileconfigure命令支持以下参数:

  • --prefix = path - 定义将保留服务器文件的目录。 这个同一个目录也将用于由configure(除了库源的路径)和nginx.conf配置文件中设置的所有相关路径。
    它默认设置为/usr/local/nginx目录。
  • --sbin-path = path - 设置nginx可执行文件的名称。此名称仅在安装期间使用。默认情况下文件名为 prefix/sbin/nginx
  • --conf-path = path - 设置nginx.conf配置文件的名称。 如果需要,nginx可以始终使用不同的配置文件启动,方法是在命令行参数-c file 指定。
    默认情况下,该文件名为:prefix/conf/nginx.conf
  • --pid-path = path - 设置将存储主进程的进程ID的nginx.pid文件的名称。 安装后,可以使用pid指令在nginx.conf配置文件中更改文件名。
    默认情况下,文件名为:prefix/logs/nginx.pid
  • --error-log-path = path - 设置主错误,警告和诊断文件的名称。 安装后,可以在nginx.conf配置文件中使用error_log指令更改文件名。
    默认情况下,文件名为:prefix/logs/error.log
  • --http-log-path = path - 设置HTTP服务器主要请求日志文件的名称。 安装后,可以使用access_log指令在nginx.conf配置文件中更改文件名。
    默认情况下,文件名为:prefix/logs/access.log
  • --build = name - 设置一个可选的nginx构建名称。
  • --user = name - 设置非特权用户的名称,该用户的凭据将由工作进程使用。 安装后,可以使用user指令在nginx.conf配置文件中更改名称。 默认的用户名是:nobody
  • --group = name - 设置由工作进程使用其凭据的组的名称。 安装后,可以使用user指令在nginx.conf配置文件中更改名称。 默认情况下,组名称设置为非特权用户的名称。
  • --with-select_module--without-select_module — 启用或禁用构建允许服务器使用select()方法的模块。
    如果平台似乎不支持更合适的方法(如kqueueepoll/dev/poll),则会自动构建该模块。
  • --with-poll_module--without-poll_module — 启用或禁用构建允许服务器使用poll()方法的模块。
    如果平台似乎不支持更合适的方法(如kqueueepoll/dev/poll),则会自动构建该模块。
  • --without-http_gzip_module - 禁用构建压缩HTTP服务器响应的模块。 需要zlib库来构建和运行此模块。
  • --without-http_rewrite_module - 禁用构建一个允许HTTP服务器重定向请求并更改请求URI的模块。 需要PCRE库来构建和运行此模块。
  • --without-http_proxy_module - 禁用构建HTTP服务器代理模块。
  • --with-http_ssl_module - 可以构建一个将HTTPS协议支持添加到HTTP服务器的模块。 默认情况下不构建此模块。 OpenSSL库是构建和运行该模块所必需的。
  • --with-pcre = path - 设置PCRE库源的路径。库发行版(4.4 - 8.40版)需要从PCRE站点下载并提取。 其余的由nginx的./configuremake完成。 该库是 location
    指令和ngx_http_rewrite_module模块中正则表达式支持所必需的。
  • --with-pcre-jit - 使用“即时编译”支持构建PCRE库。
  • --with-zlib = path - 设置zlib库的源路径。 库分发(版本1.1.3 - 1.2.11)需要从zlib站点下载并提取。 其余的由nginx的./configuremake完成。 该库是ngx_http_gzip_module模块所必需的。
  • --with-cc-opt = parameters - 设置将添加到CFLAGS变量的其他参数。 在FreeBSD下使用系统PCRE库时,应指定--with-cc-opt="-I /usr/local/include"
    如果需要增加select()所支持的文件数,那么也可以在这里指定,如:--with-cc-opt="-D FD_SETSIZE=2048"
  • --with-ld-opt = parameters - 设置链接过程中使用的其他参数。 当在FreeBSD下使用系统PCRE库时,应指定--with-ld-opt="-L /usr/local/lib"
  • --with-http_stub_status_module -设置Nginx服务状态监控,需要配合location使用
    location /nginx_status { stub_status on; access_log off; }

10. nginx 重定向实现新旧域名过渡(www.example1.com ->www.example2.com)

利用rewrite实现

server {
	server_name www.example1.com;
	rewrite ^/(.*)$  http://www.example2.com/$1 permanent;
}
  • 利用Nginx核心变量$host 实现
server {
	server_name www.example2.com www.example1.com;
	if ($host != 'www.example2.com' ) {
		rewrite ^/(.*)$  http://www.example2.com/$1 permanent;
	}
}

if/rewrite/set/break命令

  • if语法:if (condition) {} # 默认值none
    • 使用字段:server 、location
server {
    listen       80;
    server_name www.example.com;
    access_log  logs/host.access.log  main;
    location / {
    root   /var/www/html;
    index  index.html index.htm;
    }
    location ~*\.(gif|jpg|jpeg|png|bmp|swf|htm|html|css|js)$  {
                root    /usr/local/nginx/www/img;
               if (!-f $request_filename)
               {
                  root    /var/www/html/img;
                }
                if (!-f $request_filename)
               {
                  root    /apps/images;
                }
        }
        location ~*\.(jsp)$  {
                root    /webdata/webapp/www/ROOT;
               if (!-f $request_filename)
               {
                  root    /usr/local/nginx/www/jsp;
                }
               proxy_pass http://127.0.0.1:8888;
        }
}
  • set语法:set variable value # 默认值0
    • 使用字段:server 、location 、if
location / {
proxy_pass http://127.0.0.1:8080/;
set $query $query_string;
rewrite /dede /wordpress?$query?;
}
  • rewrite语法:rewrite regx flag # 默认值none
    • 使用字段:server 、location 、if
location ~ ^/best/ {
           rewrite ^/best/(.*)$ /test/$1  break;
           proxy_pass  http://www.example.com;
 }
  • break语法:break # 默认值none
    • 使用字段:server 、location 、if
server {
    listen       80;
    server_name  www.ep.cn www.example.com;
    if ($host != 'www.tb.cn') {
     rewrite ^/(.*)$ http://www.ep.cn/error.txt
    break;
    rewrite ^/(.*)$ http://www.ep.cn/$1 permanent;
        }
}

这个例子定义了两个域名www.ep.cn和www.example.com,当通过域名www.example.com访问网站时,会将请求重定向到http://www.ep.cn/error.txt页面,由于设置了break命令,因此下面的rewrite规则不再执行,直接退出。

11. ngx_http_access_module模块实现ip地址访问限制

示例:

location / {
    deny 192.168.1.80;
    allow 192.168.1.0/24;
    allow 192.16.1.0/16;
    deny all;
}

12. 目录访问权限

location /images/ {
    autoindex on; # Nginx默认是不允许列出整个目录的。autoindex on来启用目录流量
    autoindex_exact_size off; # 默认为on,显示出文件的确切大小,单位是bytes。改为off后,显示出文件的大概大小,单位是kB或者MB或者GB
    autoindex_localtime on; # 默认为off,显示的文件时间为GMT时间。改为on后,显示的文件时间为文件的服务器时间
}

13. 正则表达式

正则表达式匹配:
~表示区分大小写匹配。
~*表示不区分大小写匹配。
和!*分别表示区分大小写不匹配以及不区分大小写不匹配。
文件及目录匹配:
-f和!-f用来判断是否存在文件。
-d和!-d用来判断是否存在目录。
-e和!-e用来判断是否存在文件或目录。
-x和!-x用来判断文件是否可执行

14. Nginx内置变量

$args,此变量与请求行中的参数相等。
$document_root,此变量等同于当前请求的root命令指定的值。
$uri,此变量等同于当前request中的URI。
$document_uri,此变量与$uri含义一样。
$host,此变量与请求头部中“Host”行指定的值一致。
$limit_rate,此变量用来设置限制连接的速率。
$request_method,此变量等同于request的method,通常是“GET”或“POST”。
$remote_addr,此变量表示客户端IP地址。
$remote_port,此变量表示客户端端口。
$remote_user,此变量等同于用户名,由ngx_http_auth_basic_module认证。
$request_filename,此变量表示当前请求文件的路径名,由root或alias与URI request组合而成。
$request_uri,此变量表示含有参数的完整的初始URI。
$query_string,此变量与$args含义一致。
$server_name,此变量表示请求到达的服务器名。
$server_port,此变量表示请求到达的服务器的端口号。

  1. nginx 下安装缓存服务模块

Nginx自带缓存服务主要有proxy_cache 和fastcgi_cache命令集构成,前者用于反向代理时对后端内容源服务器进行缓存,后者主要用于对fastcgi的动态缓存。第三方模块ngx_slowfs_cache也可以实现缓存服务配置。

猜你喜欢

转载自blog.csdn.net/paopaohll/article/details/83964138