Nginx安装及配置

2023-05-16

Nginx

安装简介:

  1. 有两个版本

    • Mainline版:

      包含最新的特性和bug修改,并且总是保持更新。可靠,但可能会包含实验性的模块,以及一定数量的新 bug

    • Stable版:

      不包含新特性,但包含关键 bug 修复。推荐使用该版用于生产环境

安装:

源码编译安装

​ 更为灵活,可以添加特定的模块,包含添加第三方的模块,或者应用最新的安全补丁

  1. 安装Nginx之前需要先安装nginx的依赖库

    • PCRE库 : nginx 的 corerewrite模块依赖 PCRE 库。它提供对于正则表达式的支持:

      > wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.39.tar.gz
      > tar -zxf pcre-8.39.tar.gz
      > cd pcre-8.38
      > ./configure
      > make
      > sudo make install
    • zlib库:nginx 的 gzip 模块依赖 zlib 库。用于对 HTTP headers 进行压缩:

      > wget http://zlib.net/zlib-1.2.11.tar.gz
      > tar -zxf zlib-1.2.11.tar.gz
      > cd zlib-1.2.8
      > ./configure
      > make
      > sudo make install
    • OpenSSL 库 :nginx 的 SSL 模块依赖该库,用于支持 HTTPS 协议

      > wget https://www.openssl.org/source/openssl-1.1.0e.tar.gz
      > tar -zxf openssl-1.1.0e.tar.gz
      > cd openssl-1.0.2f
      > ./config  --prefix=/usr/local/openssl
      > make
      > sudo make install

      如果系统已经默认安装了openssl,则执行一下命令删除掉:

      mv /usr/bin/openssl /usr/bin/openssl.OFF  
      mv /usr/include/openssl /usr/include/openssl.OFF
      mv /usr/bin/openssl /usr/bin/openssl.OFF  
      mv /usr/include/openssl /usr/include/openssl.OFF  
      ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl  
      ln -s /usr/local/openssl/include/openssl /usr/include/openssl  
      echo "/usr/local/openssl/lib">>/etc/ld.so.conf
      ldconfig -v 

      查看版本

      openssl version -a
  2. 下载nginx源码tarball

    下载地址:http://nginx.org/en/download.html

    • mainline

      > wget http://nginx.org/download/nginx-1.9.4.tar.gz
      > tar zxf nginx-1.11.1.tar.gz
      > cd nginx-1.9.4
    • stable 版

      > wget http://nginx.org/download/nginx-1.10.1.tar.gz
      > tar zxf nginx-1.10.1.tar.gz
      > cd nginx-1.10.1
  3. 编译安装(默认安装)

    > ./configure --with-http_ssl_module # 添加SSL支持模块,HTTPS必须的
    > make
    > sudo make install

yum安装

  1. 先安装nginx的依赖库

    • PCRE库:

      > yum install -y pcre pcre-devel
      
      # pcre-devel是使用PCRE做二次开发时所需要的开发库,包括头文件等,这也是编译Nginx所必须使用的
      
    • zlib库:

      > yum install -y zlib zlib-devel
      
      # zlib是直接使用的库,zlib-devel是二次开发所需要的库
      
    • OpenSSL 库:

      > yum install -y openssl openssl-devel
  2. 安装 nginx

    • 从默认的 Red Hat/CentOS 仓库安装nginx(版本较低)

      1. 安装 EPEL 仓库:
      > sudo yum install epel-release
      1. 更新仓库,并安装 nginx:
      > sudo yum update
      1. 验证所安装的 nginx 版本:
      > sudo nginx -v nginx version: nginx/1.6.3
    • nginx repo 安装 nginx

      1. 设置 yum 仓库:
      > cd /etc/yum.repos.d $ sudo vi /etc/yum.repos.d/nginx.repo
      1. 根据实际情况添加内容:
      [nginx] name=nginx repo 
      baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/
      gpgcheck=0 
      enabled=1
      
      
      # “OS” 是 rhel 或者 centos
      
      
      # “OSRELEASE” 为系统版本:5, 5.x, 6, 6.x, 7, 7.x
      
      
      # “/mainline” 是最新的 mainline 版。删除 “/mainline” 是安装最新的 stable 版
      
      
      eg:CentOS 7.0 获取最新的 mainline package:
      
      [nginx]
      name=nginx repo
      baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
      gpgcheck=0
      enabled=1
      1. 保存退出,更新仓库,并安装 nginx:
      > sudo yum update
      > yum -y install nginx

Nginx相关操作命令

  • 启动、停止、重启等命令必须进入Nginx安装目录的sbin目录下执行

  • 启动

    > nginx
  • 停止(立即关闭)

    > nginx -s stop
  • 优雅的停止(会等进程执行完才关闭)

    > nginx -s quit
  • 重启(只是重新加载了配置文件)

    > nginx -s reload

常见问题及解决办法

Pcre编译报错: configure: error: You need a C++ compiler for C++ support

yum -y install gcc-c++ 

80端口被占用

  • 只需要查看是哪个服务占用了端口,把端口改掉或者杀死进程即可

  • nginx有一个历史版本是先监听了ipv4的80端口之后又监听了ipv6的80端口,于是就重复占用了,如果是这种情况去编辑nginx的配置文件把原来占用两个80端口的地方改成以下再启动nginx即可


    listen 80;
    listen [::]:80 ipv6only=on default_server;

权限配置不正确
  ​ 这个是nginx出现403 forbidden最常见的原因。为了保证文件能正确执行,nginx既需要文件的读权限,又需要文件所有父目录的可执行权限。

403报错

  • 网站禁止特定的用户访问所有内容,例:网站屏蔽某个ip访问。
  • 访问禁止目录浏览的目录,例:设置autoindex off后访问目录。
  • 用户访问只能被内网访问的文件。

    目录索引设置错误(index指令配置)

      修改配置文件:
    
      > vim /var/local/nginx/conf/nginx.conf
1.修改index值
         # index默认只有index.html
         location / {
               root   /var/web/blog/;
               index  index.htm index.html index.php;
         }
2.如果第一种办法还是不行,查看fastcgi_index配置是否正确
         location ~ \.php$ {
                     root           /var/web/blog/;
                     fastcgi_pass   127.0.0.1:9000;
                     fastcgi_index  index.php;
                     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
                     include        fastcgi_params;
                 }

make出错:

./configure: error: SSL modules require the OpenSSL library.

You can either do not enable the modules, or install the OpenSSL library

into the system, or build the OpenSSL library statically from the source

with nginx by using –with-openssl= option.

ubuntu下解决办法:

apt-get install openssl
apt-get install libssl-dev

centos下解决办法:

yum -y install openssl openssl-devel

oneinstack安装web环境时报错,yum源导致的

  1. 删除/etc/yum.repo.d/下面无用的yum源文件
  2. 需要的话挂载光盘到/mnt/目录下

    #此处以虚拟机为例
    mount /dev/cdrom /mnt/
  3. 重新缓存yum元数据

    yum clean all
    yum makecache

Nginx配置多端口访问多站点

  1. 首先要编辑 hosts 文件

    > vim /etc/hosts
    
    # 添加一条  www.test.com为你想用的本地域名
    
    127.0.0.1 www.test.com
  2. 修改nginx.conf配置文件,修改server节点的三个值

    listen  8080;                #监听端口
    server_name  localhost;      #第一步设置的本地域名
    root  /usr/local/var/www;    #项目根目录
  3. 如果需要配置多个,则重复执行上面的操作,在hosts文件中添加本地域名并修改每个server的三个值

配置Nginx支持PHP

  1. 需要安装php-fpm

    > yum -y install php-fpm    # php与nginx连接软件
  2. 为了使PHP不出现中文乱码,可以安装上php-mbstring

    > yum  -y install php-mbstring  # php的中文编码库
  3. 可以装上php-xml,使得PHP可以解析XML

    yum install php-xml    # php与xml连接软件
  4. 启动php-fpm,并设置php-fpm开机自启

    > service php-fpm start      # 如果系统版本过高  使用  systemctl start php-fpm.service
    > chkconfig php-fpm on       # 如果系统版本过高  使用  systemctl enable php-fpm.service
  5. 在相应的目录下找到nginx.conf配置文件,这里是在默认目录下,开启Nginx支撑PHP的模块

    > cd /usr/local/nginx/conf    # 进入Nginx配置目录
  6. 修改Nginx配置文件

    > vim nginx.conf               # 配置nginx.conf文件
    
    
    # 首先将注释,也就是#号去掉
    
    
    # 接着将fastcgi_param对应的/scripts$fastcgi_script_name改成$document_root$fastcgi_script_name
    
    
    修改前
    
    
    #location ~ \.php$ {
    
    
    
    #    root          html;
    
    
    
    #    fastcgi_pass  127.0.0.1:9000;
    
    
    
    #    fastcgi_index  index.php;
    
    
    
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    
    
    
    #    include        fastcgi_params;
    
    
    修改后
    
    location ~ \.php$ {
    
     root          html;
    
     fastcgi_pass  127.0.0.1:9000;
    
     fastcgi_index  index.php;
    
     fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
    
     include        fastcgi_params;
    
    }
  7. 修改之后保存退出,重新加载一下Nginx配置文件即可

    :wq
    service nginx reload

PHP-FPM升级

> rpm -Uvh https://mirror.webtatic.com/yum/el6/latest.rpm
> rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm
> cd /etc/yum.repos.d
> curl -O http://rpms.famillecollet.com/enterprise/remi.repo
> yum install php-fpm php php-devel -y --enablerepo=remi-php56
> php-fpm -version

附录:源码包编译安装可配置参数

源码包中提供 configure 脚本用于在编译前定义 nginx 各方面的配置。执行 configure 脚本最后生成 Makefile,make 命令根据 Makefile 进行编译安装

子目录

  • 配置 nginx 文件安装路径
  • 配置 nginx gcc 选项
  • 指定 nginx 并发模型
  • nginx 的模块
  • 默认编译的模块
  • 默认不编译的模块
  • 第三方模块
  • 静态链接模块和动态链接模块

配置示例:

> ./configure \
--sbin-path=/usr/local/nginx/nginx \
--conf-path=/usr/local/nginx/nginx.conf \
--pid-path=/usr/local/nginx/nginx.pid \
--with-pcre=../pcre-8.38 \
--with-zlib=../zlib-1.2.8 \
--with-http_ssl_module \
--with-stream \
--add-module=/usr/build/nginx-rtmp-module \

配置 nginx 文件安装路径

使用 configure 脚本可设置 nginx 的文件安装路径,包括 nginx 二进制文件和配置文件,以及设置依赖库如 PCRE 和 SSL 的源码所在路径(用于对其进行静态编译)。

–prefix=path

定义 nginx 文件的安装路径。configure 的其他选项如果使用相对路径,那么以此路径为基础路径。(except for paths to libraries sources)。nginx.conf 文件中的相对路径也以此为基础路径。默认 --prefix=/usr/local/nginx

–sbin-path=path

设置 nginx 二进制程序的路径名,这个名字只在安装期间使用。默认 --sbin-path=prefix/sbin/nginx

–conf-path=path

设置 nginx.conf 的路径。nginx 可在启动时手动以 -c file 参数指定其他配置文件。默认 --conf-path=prefix/conf/nginx.conf

–pid-path=path

设置 nginx.pid 文件的路径。安装nginx之后,可在 nginx.conf 文件中使用 pid 指令修改该路径。默认 --pid-path=prefix/logs/nginx.pid

–error-log-path=path

设置 nginx 错误日志的路径。安装nginx之后,可在 nginx.conf 文件中使用 error_log 指令修改该路径。默认 --error-log-path=prefix/logs/error.log

–http-log-path=path

设置 nginx 访问日志的路径。安装nginx之后,可在 nginx.conf 文件中使用 access_log 指令修改该路径。默认 --http-log-path=prefix/logs/access.log

–user=name

设置启动 worker 进程时所使用的非特权用户名。安装nginx之后,可在 nginx.conf 文件中使用 user 指令修改用户名。默认 --user=nobody

–group=name

设置启动 worker 进程时所使用的非特权用户组名。安装nginx之后,可在 nginx.conf 文件中使用 user 指令修改用户组名。默认 --group=nobody

–with-pcre=path

设置 PCRE 库的源码路径。首先需要下载和解压 PCRE 库。要求 PCRE 的版本范围为 4.4 — 8.38。设置之后,其余的就交给 ./configure 和 make 命令。nginx 使用 PCRE 库用于支持正则表达式。正则表达式在 location 指令和 rewrite 模块中会用到。

–with-pcre-jit

编译 PCRE 库时,加入 “just-in-time compilation” 支持 (1.1.12, the pcre_jit directive)

–with-zlib=path

设置 zlib 库的源码路径。首先需要下载和解压 zlib 库。

要求 zlib 库的版本范围为 1.1.3 — 1.2.8,设置之后,其余的就交给 ./configure 和 make 命令。gzip 压缩模块依赖 zlib 库。

配置 nginx gcc 选项

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Nginx安装及配置 的相关文章

  • Cannot convert a symbolic Tensor (simple_rnn/strided_slice:0) to a numpy array. 报错 (解决方法)

    1 报错 问题 xff1a xff08 来自 Python深度学习 P164 165 xff09 在运行以下代码的时候 xff0c 报错 xff1a Cannot convert a symbolic Tensor simple rnn s
  • 图像几何校正

    几何校正中混淆的概念 名词描述几何校正几何畸变会给基于遥感图像的定量分析 变化检测 图像融合 地图测量或更新等处理带来误差 xff08 主要指二维平面坐标 xff09 xff0c 所以需要针对图像的几何畸变进行校正 xff0c 也就是几何校
  • 解决VS2015 安装失败问题,如安装包损坏或丢失

    搜索包路径选择下面这个路径
  • 1.ODBC连接Postgresql

    SQLDriverConnect SQLDriverConnect 是 SQLConnect 的替代方法 它支持需要比 SQLConnect 中的三个参数更多的连接信息的数据源 对话框来提示用户输入所有连接信息 xff0c 以及系统信息中未
  • ImportError: DLL load failed while importing Qsci

    pyqt5报错 xff1b ImportError span class token operator span DLL load failed span class token keyword while span importing Q
  • 关于编译QGIS3.22.12配置的python库

    注意 xff1a 安装了多个python环境的很容易编译出错 xff1b 其中3 22需要配置python3 9的环境 在编译QGIS过程中的报错 报错1 xff1a No module named span class token cha
  • Qt中设置删除提示框

    Qt中设置删除提示框 QMessageBox StandardButton sButton 61 QMessageBox question NULL QObject tr 34 提示 34 QObject tr 34 该数据是否删除 34
  • 你真的对图像格式了解么?

    图像是人类视觉的基础 xff0c 是自然景物的客观反映 xff0c 是人类认识世界和人类本身的重要源泉 图 是物体反射或透射光的分布 xff0c 像 是人的视觉系统所接受的图在人脑中所形成的印象或认识 xff0c 照片 绘画 剪贴画 地图
  • 配置Qt中pro、pri文件

    002helloWorld pro span class token macro property span class token directive hash span span class token directive keywor
  • 构建一个字符串类

    文章目录 1 构建字符串数据 2 创建那些函数给外界调用 1 构造函数以及设计构造函数初值 2 类内带有指针 考虑3个特殊重要函数 3 考虑辅助函数 3 定义具体函数 1 设计构造函数内容
  • PostgreSQL查询

    PostgreSQL 数据库连接 QT xff1a 建立到数据库的连接 QSqlDatabase db 61 QSqlDatabase addDatabase 34 QPSQL 34 db setHostName 34 localhost
  • Conda install 报错:An HTTP error occurred when trying to retrieve this URL. HTTP errors are often...

    1 问题描述 xff1a 准备在Anaconda prompt执行以下命令 xff1a conda install c stellargraph stellargraph 报错 xff1a An HTTP error occurred wh
  • svn原理----revert,回滚

    一 子命令Svn revert 取消所有的本地编辑 下面我们来看一下子命令Svn revert例子 xff1a 丢弃对一个文件的修改 xff1a Svn revert foo c Reverted foo c 如果你希望恢复一整个目录的文件
  • Qt 自定义控件提升,头文件找不到的问题

    Qt 自定义控件提升 xff0c 头文件找不到的问题 在附加包含目录添加 xff1a
  • 分析int(*p)[4] = a

    面试题 xff1a 二级指针 include lt iostream gt int main int a 3 4 61 0 1 2 3 4 5 6 7 8 9 10 11 int p 4 61 a std cout lt lt p 43 1
  • af::convolve在CUDA中局限性

    使用在Cuda出现访问冲突问题 xff08 opengcl正常 xff09 xff1a af convolve I I kernel 报错 xff1a 0x00007FFC6443ADAC af dll 处 位于 XXXX exe 中 引发
  • 2016

    2016 最近 xff0c 许多朋友兴起总结2016了 xff0c 看得我心痒 xff0c 心热 我自己不禁也总结起来了 别人的总结要么是 2016XXXX 要么是 2016OOOO 我苦思2秒 xff0c 却想不起一个标题来 xff0c
  • gdb反汇编disassemble

    GDB Command Reference disassemble command gdb反汇编可用disassemble disass命令 用法如下 xff1a disassemble disassemble Function 指定要反汇
  • S.M.A.R.T. 参数(smartctl)计算硬盘精确健康值

    参考 xff1a Acronis Drive Monitor Disk Health Calculation 文章目录 1 背景2 smartctl a dev sda3 计算健康值3 1 关键参数3 1 1 公式说明3 2 2 计算举例
  • python脚本——通过telnet连接设备

    文章目录 一 说明二 代码三 用法总结 一 说明 通过telnetlib库 xff0c telnet到设备上并做一些测试 包括重启设备 等待重启完成 其它测试操作等 二 代码 span class token comment usr bin

随机推荐

  • lspci 命令详解及常用命令

    文章目录 一 说明二 参数说明三 用法举例 一 说明 lspci是查看设备上pcie设备信息的命令 该命令的不同参数配合 xff0c 在查看pcie设备和定位pcie问题时很有用 包括查看pcie设备中断号 查看配置空间内容 修改配置空间寄
  • 中断模式和polling模式 && 硬件中断和软件中断

    文章目录 一 总结在前二 中断2 1 硬件中断与软件中断2 1 1 对比2 1 2 硬件中断2 1 3 软件中断 三 polling 一 总结在前 S NOInterruptPolling1中断模式下 xff0c 设备通知CPU有业务需要被
  • dma_alloc_coherent 申请内存用法和问题总结

    文章目录 1 dma alloc coherent用法2 问题3 解决方法方法一 xff0c 走CMA空间配置3 1 内核配置 96 96 CONFIG CMA 96 96 3 2 修改cma起始地址3 3 设置cma空间 xff08 大小
  • hadoop之HDFS:通过Java API访问HDFS

    HDFS是一个分布式文件系统 xff0c 可以通过Java API接口对HDFS进行操作 xff0c 下面记录实现Java API的过程和出现的一些问题及解决方案 环境搭建 导入jar包 common包中的jar文件导入 hadoop 2
  • sonic开发——修改内核配置

    参考 xff1a https github com Azure sonic linux kernel sonic 中的内核配置修改不需要编译menuconfig xff0c 而是直接修改 patch kconfig exclusions和p
  • 计算机内存管理之内存访问

    文章目录 一 设备I O内存访问ioremap amp ioremap nocacheioremap cachedioremap wc amp ioremap wtI O内存访问流程 二 设备地址映射到用户空间mmap过程 三 devmem
  • 内存管理之预留内存

    文章目录 一 memblock二 cmdline 有时候 xff0c 我们需要预留一段内存不受内核直接管理分配 xff0c 有什么办法 xff1f 一 memblock mmeblock是内存的一种管理机制 xff0c 主要管理这两种内存
  • 远程工作的一些命令

    文章目录 git配置ssh免密登录sshfs映射远程目录linux远程控制其它主机vscode ssh失败 git配置 git config global user name usrname git config global user e
  • 机器视觉-相机标定及畸变矫正

    摘要 xff1a 本文首先介绍了针孔相机模型 xff08 线性模型 xff09 xff0c 然后推导四个坐标轴变换的关系 xff0c 引出R T K D中包含相机的5个内参 xff0c 6个外参 然后介绍相机畸变的原因以及畸变模型 xff0
  • STM32的寄存器操作

    STM32最基本的 xff0c 最底层的 xff0c 就是对寄存器的直接操作 通过操作特定寄存器的特定位 xff0c 来实现相对应的功能 本文通过GPIO点亮LED来演示 GPIO 查阅数据手册 xff0c 了解相关内容 启动代码 旧版的k
  • STM32之RTOS:uCOS和FreeRTOS

    RTOS全称是 Real Time Operating System xff0c 中文就是实时操作系统 RTOS是指一类系统 xff0c 如 uC OS xff0c FreeRTOS xff0c RTX xff0c RT Thread 等
  • 树莓派3b系统Ubuntumate16下的tightvnc或xrdp远程控制开机启动

    本文主要是树莓派3b系统Ubuntumate16下 xff0c tightvnc开机自启动的爬坑经验 xff0c 这一技术极大便利了我们在手机 电脑端 xff0c 远程控制树莓派等基于liux系统的移动开发硬件 实现的过程从0到1 xff0
  • 关于spring-boot-maven-plugin插件爆红问题

    关于spirngboot打包插件爆红 xff0c 也就是 Plugin org springframework boot spring boot maven plugin not found错误问题 网上找了一大堆方法试了还是爆红 xff0
  • 198个经典C#WinForm实例源码(超赞)

    198个经典C WinForm实例源码 1 窗体 2 控件 3 图像 4 报表 5 系统 6 文件 7 网络 8 数据库 9 加密 解密 10 硬件读写 01 窗体技巧02 控件操作03 图像操作04 报表打印06 系统操作07 文件处理0
  • MySQL8.0.12重置root密码

    在安装完数据库后 xff0c 由于自己不小心直接关闭了安装窗口 xff0c 或者长时间没有使用root用户登录系统 xff0c 导致忘记了root密码 xff0c 这时就需要重置MySQL的root密码 当然 xff0c 最简单方式自然是删
  • 解决方法集合CondaHTTPError:HTTP 000 CONNECTION FAILED for url<https://mirrors.tuna.tsinghua.edu.cn/anaco

    目录 背景 解决方案 主要原因 xff1a 配置没配对 方法A xff1a 在cmd输入 方法B xff1a 修改 condarc xff08 运行期配置文件 xff09 其他原因 原因A xff1a 开了代理或者VPN 原因B xff1a
  • c# TCP通信编程

    目录 协议类JSON协议类XML协议类 通信信息适配 协议类 span class token keyword public span span class token keyword abstract span span class to
  • 【银河麒麟V10】【桌面】ssh连接问题

    1 xshell secureCRT ssh连接V10 2107报 服务器发送了一个意外的数据包 如下 xff1a 解决方式 xff1a 方式1 使用mobaxterm连接无问题 方式2 sudo vim etc ssh sshd conf
  • 【su问题】su: warning: cannot change directory to /home/oracle: Permission denied

    发现问题 su warning cannot change directory to home oracle Permission denied 解决方法 基本上是根目录 或者是 home oracle目录权限的问题 root 64 myo
  • Nginx安装及配置

    Nginx 安装简介 xff1a 有两个版本 Mainline版 包含最新的特性和bug修改 xff0c 并且总是保持更新 可靠 xff0c 但可能会包含实验性的模块 xff0c 以及一定数量的新 bugStable版 不包含新特性 xff