centos7 安装 nginx(https) 及403错误解决方法

1.检查并安装所需的依赖软件

 1).gcc:nginx编译依赖gcc环境

   安装命令:yum install gcc-c++

 2).pcre:(Perl Compatible Regular Expressions)是一个Perl库,包括 perl 兼容的正则表达式库。nginxhttp模块使用pcre来解析正则表达式.

   安装命令:yum install -y pcre pcre-devel

 3).zlib:该库提供了很多种压缩和解压缩的方式,nginx使用zlibhttp包的内容进行gzip。

   安装命令:yum install -y zlib zlib-devel

 4).openssl:一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。nginx不仅支持http协议,还支持https(即在ssl协议上传输http).

   安装命令:yum install -y openssl openssl-devel

2.下载nginx源码包

 下载命令:wget http://nginx.org/download/nginx-1.12.0.tar.gz

3.解压缩源码包并进入

 1).解压缩:tar -zxvf nginx-1.12.0.tar.gz

 2).进入解压缩后文件夹:cd nginx-1.12.0

4.配置编译参数命令:(可以使用./configure --help查询详细参数)

./configure --prefix=/usr/local/nginx 

5.编译并安装

  命令:make && make install

  可以进入/usr/local/nginx查看文件是否存在conf、sbin、html文件夹,若存在则安装成功

6.启动nginx

 1).进入安装目录

   cd /usr/local/nginx/sbin/

 2).启动

   ./nginx

 3).若报错:[emerg] open() "/var/run/nginx/nginx.pid" failed (2: No such file or directory)

   需要查看下是不是在/var/run文件夹下不存在nginx文件夹,不存在则新建

 4).查看是否启动:ps -ef | grep nginx

   如果有master和worker两个进程证明启动成功

      

  注意:执行./nginx启动nginx,这里可以-c指定加载的nginx配置文件,如下:

   ./nginx -c /usr/local/nginx/conf/nginx.conf

   如果不指定-c,nginx在启动时默认加载conf/nginx.conf文件,此文件的地址也可以在编译安装nginx时指定./configure的参数(--conf-path= 指向配置文件(nginx.conf))

7.停止

 1).暴利kill(不推荐使用)

   kill -9 processId

 2).快速停止

   cd /usr/local/nginx/sbin && ./nginx -s stop

   此方式相当于先查出nginx进程id再使用kill命令强制杀掉进程

 3).完整停止(建议使用)

   cd /usr/local/nginx/sbin && ./nginx -s quit

   此方式停止步骤是待nginx进程处理任务完毕进行停止

8.重启及重新加载配置

  1.先停止再启动(建议使用)

    ./nginx -s quit && ./nginx

  2.重新加载配置文件
    ./nginx -s reload

9.测试

  nginx安装成功,启动nginx,即可通过ip地址来访问nginx:

10.开启nginx的ssl模块
1.the "ssl" parameter requires ngx_http_ssl_module  in /usr/local/nginx/conf/nginx.conf:37
原因是nginx缺少http_ssl_module模块,编译安装时带上--with-http_ssl_module配置就可以了
2.如果已经安装过nginx,想要添加模块看下面
1)切换到nginx源码包
        cd /usr/local/src/nginx-1.11.3
2)查看ngixn原有的模块
        /usr/local/nginx/sbin/nginx -V
3)重新配置
        ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
4)重新编译,不需要make  install安装。否则会覆盖
        make
5)备份原有已经安装好的nginx
        cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
6)将刚刚编译好的nginx覆盖掉原来的nginx(ngixn必须停止)
        cp ./objs/nginx /usr/local/nginx/sbin/ 
这时,会提示是否覆盖,请输入yes,直接回车默认不覆盖
7)启动nginx,查看nginx模块,发现已经添加
        /usr/local/nginx/sbin/nginx -V 


解决Nginx出现403 forbidden (13: Permission denied)报错的四种方法

我是在在本地用虚拟机中通过yum安装nginx的,安装一切正常,但是访问时报403,

于是查看nginx日志,路径为/var/log/nginx/error.log。打开日志发现报错Permission denied,详细报错如下:

1.    open() "/data/www/1.txt" failed (13: Permission denied), client: 192.168.1.194, server: www.web1.com, request: "GET /1.txt HTTP/1.1", host: "www.web1.com"

没有权限?于是找了不少资料,可以通过下面四步排查解决此问题。你可能只是其中之前配置有问题,不一定四个步骤都用上。


一、由于启动用户和nginx工作用户不一致所致

1.1查看nginx的启动用户,发现是nobody,而为是用root启动的

命令:ps aux | grep "nginx: worker process" | awk'{print $1}'



1.2将nginx.config的user改为和启动用户一致,

命令:vi conf/nginx.conf


centos7 安装 nginx(https) 及403错误解决方法_第1张图片

二、缺少index.html或者index.php文件,就是配置文件中index index.html index.htm这行中的指定的文件(index命令必须要存在)。

1.    server {  

2.      listen       80;  

3.      server_name  localhost;  

4.      index  index.php index.html;  

5.      root  /data/www/;

6.    }

如果在/data/www/下面没有index.php,index.html的时候,直接文件,会报403 forbidden


三、权限问题,如果nginx没有web目录的操作权限,也会出现403错误。

解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决

1.    chmod -777 /data

2.    chmod -777 /data/www/


四、SELinux设置为开启状态(enabled)的原因。

4.1、查看当前selinux的状态。

1.    /usr/sbin/sestatus

4.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。

1.    vi /etc/selinux/config

2.     

3.    #SELINUX=enforcing

4.    SELINUX=disabled

4.3、重启生效。reboot

1.    reboot


你可能感兴趣的:(nginx,centos,https,403,nginx错误)