nginx服务搭建与配置详解
作者:互联网
官网下载nginx源码包
nginx的安装方式:
源码安装部署
官网下载源码包
[root@node4 src]# wget http://nginx.org/download/nginx-1.18.0.tar.gz
[root@node4 src]# tar xf nginx-1.18.0.tar.gz
安装依赖包
安装依赖包
[root@node4 src] yum install gcc gcc-c++ pcre pcre-devel zlib zlib-devel openssl openssl-devel -y
进入刚解压的目录
[root@node4 src]# cd nginx-1.18.0
[root@node4 nginx-1.18.0]# ls
auto CHANGES CHANGES.ru conf configure contrib html LICENSE man README src
预编译
预编译主要是用来检查系统环境是否满足安装软件包的条件
并生成Makefile文件,该文件为编译、安装、升级nginx指明了相应参数。
[root@node4 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx
./configure --help 可以查看预编译参数
--prefix 指定nginx编译安装的目录;
--user=*** 指定nginx的属主
--group=*** 指定nginx的属主与属组
--with-*** 指定编译某模块
--without-** 指定不编译某模块
--add-module 编译第三方模块
[root@node4 nginx-1.18.0]# cat Makefile #查看预编译生成的Makefile文件
default: build
clean: #make clean 删除上次的编译文件
rm -rf Makefile objs
build: # make build : 编译,默认参数,可省略build参数
$(MAKE) -f objs/Makefile
install: #安装
$(MAKE) -f objs/Makefile install
modules: #make modules 编译模块
$(MAKE) -f objs/Makefile modules
upgrade: #在线升级
/usr/local/nginx/sbin/nginx -t
kill -USR2 `cat /usr/local/nginx/logs/nginx.pid`
sleep 1
test -f /usr/local/nginx/logs/nginx.pid.oldbin
kill -QUIT `cat /usr/local/nginx/logs/nginx.pid.oldbin`
编译并安装
[root@node4 nginx-1.18.0]# make && make install #编译并安装
[root@node4 nginx-1.18.0]# /usr/local/nginx/sbin/nginx -V #查看版本
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/usr/local/nginx
启动nginx服务
[root@node4 nginx-1.18.0]# /usr/local/nginx/sbin/nginx
查看nginx进程
[root@node4 nginx-1.18.0]# ps -ef | grep nginx
root 7777 1 0 11:53 ? 00:00:00 nginx: master process /usr/local/nginx/sbin/nginx
nobody 7780 7777 0 11:53 ? 00:00:00 nginx: worker process
root 7837 4148 0 12:07 pts/0 00:00:00 grep --color=auto nginx
设置nginx别名
[root@node4 nginx-1.18.0]# alias nginx=/usr/local/nginx/sbin/nginx #临时生效nginx别名
[root@node4 nginx-1.18.0]# vim /root/.bashrc #设置永久生效,在文件中添加以下
alias nginx=/usr/local/nginx/sbin/nginx
[root@node4 nginx-1.18.0]# nginx #执行nginx可启动服务
#也可以通过变量来设置
echo "export PATH=/usr/local/nginx/sbin:$PATH" > /etc/profile.d/nginx.sh
然后重新读取下配置文件
source /etc/profile
常用命令
[root@node4 nginx-1.18.0]# nginx #启动nginx
[root@node4 nginx-1.18.0]# nginx -s stop #停止服务
[root@node4 nginx-1.18.0]# nginx -s quit #退出服务
[root@node4 nginx-1.18.0]# nginx -s reload #重载文件
语法高亮
[root@scyun nginx-1.18.0]# ls #进入源码目录
auto CHANGES CHANGES.ru conf configure contrib html LICENSE Makefile man objs README src
[root@scyun nginx-1.18.0]# cd contrib/
[root@scyun contrib]# ls
geo2nginx.pl README unicode2nginx vim
[root@scyun contrib]# cp -r vim/* /usr/share/vim/vimfiles/
#把源码包目录contrib/vim/*文件复制到/usr/share/vim/vimfiles/
nginx配置文件
nginx配置文件路径
源码安装就是前面指定–prefix=路径
yum安装在/etc/nginx/目录(主配置文件)与/etc/nginx/conf.d目录下
[root@node4 conf]# ll /usr/local/nginx/conf/
总用量 68
-rw-r--r-- 1 root root 1077 12月 21 11:41 fastcgi.conf
-rw-r--r-- 1 root root 1077 12月 21 11:41 fastcgi.conf.default
-rw-r--r-- 1 root root 1007 12月 21 11:41 fastcgi_params
-rw-r--r-- 1 root root 1007 12月 21 11:41 fastcgi_params.default
-rw-r--r-- 1 root root 2837 12月 21 11:41 koi-utf
-rw-r--r-- 1 root root 2223 12月 21 11:41 koi-win
-rw-r--r-- 1 root root 5231 12月 21 11:41 mime.types
-rw-r--r-- 1 root root 5231 12月 21 11:41 mime.types.default
-rw-r--r-- 1 root root 2656 12月 21 11:41 nginx.conf
-rw-r--r-- 1 root root 2656 12月 21 11:41 nginx.conf.default
-rw-r--r-- 1 root root 636 12月 21 11:41 scgi_params
-rw-r--r-- 1 root root 636 12月 21 11:41 scgi_params.default
-rw-r--r-- 1 root root 664 12月 21 11:41 uwsgi_params
-rw-r--r-- 1 root root 664 12月 21 11:41 uwsgi_params.default
-rw-r--r-- 1 root root 3610 12月 21 11:41 win-utf
nginx 配置文件详解
Nginx的配置文件nginx.conf位于其安装目录的conf目录下。
nginx.conf由多个块组成,最外面的块是main,main包含Events和HTTP,HTTP包含upstream和多个Server,Server又包含多个location:
main(全局设置)、server(主机设置)、upstream(负载均衡服务器设置)和 location(URL匹配特定位置的设置)。
main块设置的指令将影响其他所有设置;
server块的指令主要用于指定主机和端口;
upstream指令主要用于负载均衡,设置一系列的后端服务器;
location块用于匹配网页位置。
这四者之间的关系式:server继承main,location继承server,upstream既不会继承其他设置也不会被继承。
在这四个部分当中,每个部分都包含若干指令,这些指令主要包含Nginx的主模块指令、事件模块指令、HTTP核心模块指令,同时每个部分还可以使用其他HTTP模块指令,例如Http SSL模块、HttpGzip Static模块和Http Addition模块等。
nginx的全局配置
#user nobody; #指定nginx的工作进程的用户及用户组,默认是nobody用户
worker_processes 1; #指定工作进程的个数,默认是1个。具体可以根据服
务器cpu数量进行设置,也可以设置auto
#error_log logs/error.log; #设置nginx的错误日志路径,并设置相应的输出级别。
日志输出级别有debug、info、notice、warn、error、crit可供选择,其中,debug输出日志最为最详细,而crit输出日志最少。
#error_log logs/error.log notice;
#error_log logs/error.log info;
#pid logs/nginx.pid; #是个主模块指令,用来指定进程pid的存储文件位置
events { #事件指令是设定Nginx的工作模式及连接数上限:
worker_connections 1024; #定义每个工作进程的最大连接数,默认是1024
}
http指令块配置
http {
include mime.types; #定义数据类型
default_type application/octet-stream; #设定默认类型为二进制流,也就是当文件类型未定
义时使用这种方式,
#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;
sendfile on; #参数用于开启高效文件传输模式。将tcp_nopush和tcp_nodelay两个指令设置为on用于防止网络阻塞;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65; #设置客户端连接保持活动的超时时间。在超过这个时间之后,服务器会关闭该连接
#gzip on; 用于设置开启或者关闭gzip模块,“gzip on”表示开启GZIP压缩,实时压缩输出数据流
gzip_min_length设置允许压缩的页面最小字节数,页面字节数从header头的Content-Length中获取。默认值是0,不管页面多大都进行压缩。建议设置成大于1K的字节数,小于1K可能会越压越大;
gzip_buffers表示申请4个单位为16K的内存作为压缩结果流缓存,默认值是申请与原始数据大小相同的内存空间来存储gzip压缩结果;
gzip_http_version用于设置识别HTTP协议版本,默认是1.1,目前大部分浏览器已经支持GZIP解压,使用默认即可;
gzip_comp_level用来指定GZIP压缩比,1 压缩比最小,处理速度最快;9 压缩比最大,传输速度快,但处理最慢,也比较消耗cpu资源;
gzip_types用来指定压缩的类型,无论是否指定,“text/html”类型总是会被压缩的;
gzip_vary选项可以让前端的缓存服务器缓存经过GZIP压缩的页面,例如用Squid缓存经过Nginx压缩的数据。
server虚拟主机配置
server { #用来定义虚拟主机
listen 80; #设置监听端口,默认为80端口
server_name localhost; #域名,多个域名通过逗号或者空格隔开
#charset koi8-r; #设置网页的默认编码格式
#access_log logs/host.access.log main; #指定该虚拟主机的独立访问日志,会覆盖前面的全局配置
location / { #定义请求匹配规则
root html; #指令用于指定虚拟主机的网页根目录,这个目录可以是相对路径,也可以是绝对路径
index index.html index.htm; #用于设定访问的默认首页地址
}
#error_page 404 /404.html; #定义访问错误返回的页面
# redirect server error pages to the static page /50x.html
#
error_page 500 502 503 504 /50x.html; #凡是状态码是500 502 503 504 都会返回这个页面
location = /50x.html {
root html;
}
location匹配配置
location ~ \.php$ { #凡是以php结尾文件,都会匹配到这条规则
root html; #php文件存放的目录
fastcgi_pass 127.0.0.1:9000; #指定php-fpm进程管理的ip端口或者unix套接字
fastcgi_index index.php; #指定php脚本目录下的索引文件
fastcgi_param SCRIPT_FILENAME #指定传递给FastCGI服务器的参数 /scripts$fastcgi_script_name;
include fastcgi_params;
}
deny access to .htaccess files, if Apache's document root
concurs with nginx's one
location ~ /\.ht { #凡是请求类似.ht资源,都拒绝
deny all; #拒绝所以
}
nginx在线升级
查看原编译参数
升级一般是添加新的模块,或者升级版本,所以要参考以前编译的模块,如果
不添加,那么以前的模块就不能使用了
[root@node4 conf]# nginx -V
nginx version: nginx/1.18.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)
configure arguments: --prefix=/usr/local/nginx
预编译,编译安装
[root@node4 nginx-1.18.0]# ./configure --prefix=/usr/local/nginx/ #预编译
[root@node4 nginx-1.18.0]# make && make install 编译安装
[root@node4 nginx-1.18.0]# make upgrade #升级
标签:--,1.18,nginx,详解,usr,root,node4,搭建 来源: https://blog.csdn.net/qq_34070818/article/details/111468418