zhaoyu@home:~$

nginx-常用配置

禁用ip访问

使用default_server和_实现禁用ip访问,如下配置达到禁用80端口ip访问的效果。

server {
    listen       80 default_server;
    listen       [::]:80 default_server;
    server_name  _;
    return 444;
}

server {
    listen       80;
    listen       [::]:80;
    server_name  www.xxx.cn;
    rewrite ^(.*) https://$host$1 permanent;
}

解决Nginx出现403 forbidden (13: Permission denied)报错

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

  1. 查看nginx的启动用户,发现是nobody,而非是用root启动的
    ps aux | grep "nginx: worker process" | awk'{print $1}'
    
  2. 将nginx.config的user改为和启动用户一致
    vi conf/nginx.conf
    

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

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

chmod -R 777 /data
chmod -R 777 /data/www/

配置ssl

nginx['ssl_certificate'] = "/root/gitlabca/server.crt"
nginx['ssl_certificate_key'] = "/root/gitlabca/server.key"

修改nginx配置文件,将80端口的访问切换到443端口。

server {
        listen       80;
        server_name www.szjxgs.cn;
        location / {
            root   /home/web/ccpt_2_nf;
            index  index.html index.htm;
        }
        rewrite ^(.*) https://$server_name$1 permanent;
		location = /50x.html {
            root   html;
        }
}

443端口配置如下:

server {
        listen       443;
        server_name  www.szjxgs.cn;

        ssl on;

        ssl_certificate      cert/a.pem;
        ssl_certificate_key  cert/a.key;
        ssl_session_timeout  5m;

        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
        ssl_prefer_server_ciphers  on;

        location / {
            root   /home/web/ccpt_2_nf;
            index  index.html index.htm;
        }
}

其中ssl_certificate,ssl_certificate_key对应证书文件生成的key。

nginx添加监听不同端口的server时,需要重启。