当前位置:TranBon博客 > 首页 > 技术 > nginx配置指引.md

nginx配置指引.md

adminis3年前 (2021-02-21)技术27100

安装EPEL仓库

Centos7
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-7.noarch.rpm

CentOS6
rpm -ivh https://mirrors.aliyun.com/epel/epel-release-latest-6.noarch.rpm

安装nginx
yum -y install nginx

配置nginx

创建一个站点的根目录

我打算使用nginx做文件共享服务
mkdir /usr/share/nginx/files

创建测试文件

touch /usr/share/nginx/files/test.txt

删除默认配置

mv /etc/nginx/conf.d/default.conf /etc/nginx/conf.d/default.conf.bak

创建一个虚拟主机,用于文件共享

vi /etc/nginx/conf.d/file_server.conf

server {
  listen  80;
  server_name files.example.com;
  charset utf-8;
  root /usr/share/nginx/files;
  location / {
    autoindex on;
    autoindex_exact_size on;
    autoindex_localtime on;
    }
}

解决防火墙问题

https采用TCP443端口,随后会有配置指引,强烈建议加密,即使加密对传输速度有影响

firewalld:
firewall-cmd --add-service=http --permanent
firewall-cmd --add-service=https --permanent
firewall-cmd --reload
iptables:
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT
service iptables save
service iptables reload

重打SELinux文件标签

restorecon -RvF /usr/share/nginx/

启动nginx服务

先测试一下看看有没有报错
nginx -t

CentOS6:
service nginx start

CentOS7:
systemctl start nginx.service

在其它电脑上浏览器测试

假设你服务器的IP为192.168.1.100,你个人电脑的IP随意,可以访问服务器即可。 使用域名访问,需要在测试电脑上修改hosts文件,Windows的hosts文件位置C:\Windows\System32\drivers\etc\hosts 用记事本打开增加以下内容,如果权限问题,把文件复制到桌面修改完后再放回原位

192.168.1.100 files.example.com

在浏览器上打开
http://files.example.com
应该可以看到test.txt这个文件

设置密码

搭建文件服务器有时候不想让别人任意访问,可以用到nginx自带的认证模块。 使用这两个字段
auth_basic表示的输入密码时的提示语
auth_basic_user_file则显示认证时的用户密码文件存放路径

留意auth_basic两行

  server {
    client_max_body_size 4G;
    listen  80;
    server_name files.example.com;
    root /usr/share/nginx/files;
    location / {
        auth_basic   "Restricted";
        auth_basic_user_file /etc/nginx/pass_file;
        autoindex on;
        autoindex_exact_size on;
        autoindex_localtime on;
    }
}

生成用户密码

htpasswd -c -d /etc/nginx/pass_file user1
按指引设置密码

如果提示没有htpasswd这个命令,安装相应的包
yum -y install httpd-tools

先测试一下,看看有没有报错
nginx -t

重载配置

nginx -s reload
如果使用reload不生效就要使用restart

CentOS6:
service nginx restart

CentOS7:
systemctl restart nginx.service

测试

用浏览器测试一下,看看有没有密码要求

再创建一个网站

使用 /usr/share/nginx/html/index.html 作示范,你也可以自行修改页面内容

vi /etc/nginx/conf.d/www.conf

  #The www server
  server {
    listen       80;
    listen       [::]:80;
    server_name  www.example.com;
    root         /usr/share/nginx/html;
}

先测试一下,看看有没有报错
nginx -t

重载配置

nginx -s reload
如果使用reload不生效就要使用restart

CentOS6:
service nginx restart

CentOS7:
systemctl restart nginx.service

测试

在浏览器上分别打开
http://www.example.com
http://files.example.com

虚拟主机配置文件*.conf的其它参数

#指定进行用户
#user  nobody;

#指定进程数
worker_processes  1;

#指定日志种类
error_log  logs/error.log;
#error_log  logs/error.log  notice;
#error_log  logs/error.log  info;

#限制连接数
events {
 worker_connections  1024;
}

http {
  #限制客户端上传文件大小
  client_max_body_size 20m;
  #访问记录
  access_log  logs/access.log  main;

#允许向服务器发送文件
  sendfile        on;
}

网页中的图片处理

假设 /usr/share/nginx/www/images这个目录专门放图片,用于嵌入到网页里, 比如访问http://www.example.com/images/1.jpg ,就可以看到一张图片,但不允许客户端一次性查看images目录里所有文件,即不允许访问http://www.example.com/images

配置如下,添加return 404;及前后两行共三行

vi /etc/nginx/conf.d/blog.conf

  server {
 listen       80;
 listen       [::]:80;
 server_name  www.example.com;
 root         /usr/share/nginx/www;
 location = /images/ {
 return 404;
 }
 }
nginx.conf配置文件详解

参考https://www.zybuluo.com/phper/note/89391

为nginx开启HTTPS并使用自我签署证书

创建工作目录,执行以下指令
mkdir ~/tls && cd ~/tls

生成私钥server.key,运行:
openssl genrsa -des3 -out server.key 2048

按提示设置密码.以后使用此文件(通过openssl提供的命令或API)可能经常要求输入密码验证身份,如果想去除密码可以使用以下命令重新生成证书,但必须保证你这个私钥文件不会泄露

openssl rsa -in server.key -out server.key
输入刚刚的设置的密码

创建服务器证书的申请文件xxx.csr,运行以下指令,假设你已经搭建好三个虚拟主机, files_server、www、blog

生成主机files_server的申请文件files_server.csr
openssl req -new -key server.key -out files_server.csr
其中Country Name填CN,CommonName填主机名.例如你的URL为https://www.ABC.XYZ这里就可以填www).

生成主机www的申请文件www.csr
openssl req -new -key server.key -out www.csr

生成主机blog的申请文件blog.csr
openssl req -new -key server.key -out blog.csr

创建CA证书,即自身也是CA机构
openssl req -new -x509 -key server.key -out ca.crt -days 3650

创建自当前日期起有效期为期十年的服务器证书:
生成虚拟主机files_server的证书files_server.crt

openssl x509 -req -days 3650 -in files_server.csr -CA ca.crt -CAkey server.key -CAcreateserial -out files_server.crt
生成虚拟主机www的证书 www.crt

openssl x509 -req -days 3650 -in www.csr -CA ca.crt -CAkey server.key -CAcreateserial -out www.crt
生成虚拟主机blog的证书 blog.crt

openssl x509 -req -days 3650 -in blog.csr -CA ca.crt -CAkey server.key -CAcreateserial -out blog.crt

检查现在的文件
ll
可以看到一共生成了10个文件,其中*.crt和server.key就是你的nginx需要的证书文件.

复制相关文件到相应的目录

cp *.key /etc/pki/tls/private/
cp *.crt /etc/pki/tls/certs/

配置nginx https服务,留意.crt证书和密钥文件.key的位置

vi /etc/nginx/conf.d/ssl.conf

# HTTPS server configuration
#

#server {
#    listen       443 ssl http2 default_server;
#    listen       [::]:443 ssl;
#    server_name  _;
#    root         /usr/share/nginx/html;
#
#    ssl_certificate cert.pem;
#    ssl_certificate_key cert.key;
#    ssl_session_cache shared:SSL:1m;
#    ssl_session_timeout  10m;
#    ssl_ciphers HIGH:!aNULL:!MD5;
#    ssl_prefer_server_ciphers on;
#
#    # Load configuration files for the default server block.
#    include /etc/nginx/default.d/*.conf;
#
#    location / {
#    }
#
#    error_page 404 /404.html;
#        location = /40x.html {
#    }
#
#    error_page 500 502 503 504 /50x.html;
#        location = /50x.html {
#    }
#}
#以下是文件服务主机的配置,autoindex开头的三行用于分享文件和目录
server {
    listen       443 ssl;
    listen       [::]:443 ssl;
    server_name  files.example.com;
    root         /usr/share/nginx/files;
    location / {
    #auth_basic   "Restricted"; #网页认证用
    #auth_basic_user_file /etc/nginx/pass_file;#网页认证用
        autoindex on;  
        autoindex_exact_size on; 
        autoindex_localtime on; 
    }
#
    ssl_certificate /etc/pki/tls/certs/files_server.crt;
    ssl_certificate_key /etc/pki/tls/private/server.key;
}
#以下是www主机的配置
server {
    listen       443 ssl;
    listen       [::]:443 ssl;
    server_name  www.example.com;
#location / {
#    root         /usr/share/nginx/www;
#        index  index.html ;
#}
#
    ssl_certificate /etc/pki/tls/certs/www.crt;
    ssl_certificate_key /etc/pki/tls/private/server.key;
}
#以下是blog主机的配置
server {
   listen       443 ssl;
   listen       [::]:443 ssl;
   server_name  blog.example.com;
   root         /usr/share/nginx/blog;
#
    ssl_certificate /etc/pki/tls/certs/blog.crt;
    ssl_certificate_key /etc/pki/tls/private/server.key;
}

先测试一下,看看有没有报错
nginx -t

重载配置

nginx -s reload
如果使用reload不生效就要使用restart

CentOS6:
service nginx restart

CentOS7:
systemctl restart nginx.service

用浏览器测试三个网页:
https://files.example.com
https://www.example.com
https://blog.example.com

强制跳转到HTTPS
意思是当用户访问http://www.example.com时,自动跳转到https://www.example.com
如果是网页服务器,在虚拟主机上添加一行配置return 301 https://$server_name$request_uri;,示例:

vi /etc/nginx/conf.d/www.conf

server {
    listen       80;
    listen       [::]:80;
    server_name  www.example.com;
    return 301 https://$server_name$request_uri; 
    root         /usr/share/nginx/html;
}

如果是文件共享服务器,在虚拟主机上添加一行配置return 301 https://$server_name$request_uri; 示例如下

vi /etc/nginx/conf.d/file_server.conf

location / {
        autoindex on; 
        autoindex_exact_size on; 
        autoindex_localtime on; 
    return 301 https://$server_name$request_uri;  
    }

先测试一下,看看有没有报错
nginx -t

重载配置

nginx -s reload

如果使用reload不生效就要使用restart

CentOS6:
service nginx restart

CentOS7:
systemctl restart nginx.service

用浏览器测试三个网页,看看能不能跳转到https

http://files.example.com
http://www.example.com
http://blog.example.com

有道云笔记 https://note.youdao.com/ynoteshare1/index.html?id=6c3af6d7c37749bcfdd2e7418246489c&type=note#/

第9条随机版权

扫描二维码推送至手机访问。

版权声明:本文由TranBon博客发布,如需转载请注明出处。

本文链接:https://bk.tranbon.com/?id=278

相关文章

哈哈哈!大神Note3 终于可以把 酷派系统 或着 酷派系统 “砖头”直接刷机刷成 360 OS 2.0!

哈哈哈!大神Note3 终于可以把 酷派系统 或着 酷派系统 “砖头”直接刷机刷成 360 OS 2.0!

哈哈哈!大神Note3 终于可以把 酷派系统 直接刷成 360 OS 2.0了哈哈哈!大神Note3 终于可以把 酷派系统 “砖头”直接刷成 360 OS 2.0了最新版的刷机软件就可以了,直接把 酷...

centos7破密时提示Authentication token manipulation error

centos7破密时提示Authentication token manipulation error

需要在passwd 前输入 chattr -i /etc/passwd chattr -i /etc/shadow如下:...

把ESXi中的虚拟机通过OVA/OVF导出的方式迁移到Proxmox 5

把ESXi中的虚拟机通过OVA/OVF导出的方式迁移到Proxmox 5

一、导出OVA/OVF首先第一步是从ESXi的管理客户端vSphere Client中把要迁移的虚拟机关机,然后选中它,在菜单“文件”-“导出”-“导出OVF模板”,然后格式选择“文件的文件夹(OVF...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。