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

nginx配置指引.md

adminis4年前 (2021-02-21)技术37060

安装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/ynoteshare/index.html?id=6c3af6d7c37749bcfdd2e7418246489c

第8条随机版权
文章免责声明
尊敬的读者:

本文所提供的信息、观点及数据均来源于公开资料、相关研究报告及个人理解,仅供读者参考。本文不代表任何官方立场或专业机构的意见,亦不构成任何投资建议或决策依据。

在撰写本文时,我们已尽力确保信息的准确性和完整性,但鉴于信息来源的多样性及可能存在的误差,我们无法保证本文所述内容在任何时刻都绝对准确无误。因此,读者在阅读本文时,应结合自身实际情况及专业知识,进行独立分析和判断。

对于因本文信息不准确、不完整或读者自身理解偏差而导致的任何损失或损害,我们概不负责。同时,我们也不承担因本文所述内容引发的任何法律责任或纠纷。

此外,本文可能包含对特定公司、行业或市场的分析和预测,这些分析和预测均基于当前市场环境及可获得的信息,并可能受到多种因素的影响而发生变化。因此,读者在参考本文时,应充分考虑这些潜在的风险和不确定性。

我们鼓励读者在阅读本文后,进一步查阅相关资料和咨询专业人士,以获取更全面、准确的信息和建议。同时,我们也欢迎读者就本文内容提出宝贵的意见和建议,以便我们不断改进和提升文章质量。

最后,感谢读者对本文的关注和阅读。我们希望通过提供有价值的信息和观点,为读者在相关领域的学习和决策提供一定的帮助和参考。但请务必记住,本文所述内容仅供参考,不构成任何具体建议或承诺。

特此声明。

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

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

本文链接:http://1.tranbon.com/?id=278

“nginx配置指引.md” 的相关文章

iis7 asp网站 500 - 内部服务器错误。

iis7 asp网站 500 - 内部服务器错误。

其它配置正常的情况下解决方法: 处理完成了!...

Proxmox VE 子机被锁定、进行解锁

Proxmox VE 子机被锁定、进行解锁

Proxmox VE 子机被锁定如:备份、迁移 失败后,被锁定的解决方法如下:如:子机ID为:166 开机、重启、关机、重置、回滚快照 提示:VM is locked (backup) (500)可以通过 Proxmox VE 网页里的-》数据中心-》对应的节点-》Shell或者通过ssh登录后输入...

Proxmox VE 备份导出

Proxmox VE 备份导出

一、Proxmox VE备份可以在线备份或者离线备份由于local的内容是“容器模板, VZDump 备份文件, ISO 映像”所以在备份时默认在local里,但是由于在默认安装Proxmox VE的情况下local只有100G。备份模式有3种:快照、挂起、停止。子机在开机的情况下使用 快照备份 正...

发表评论

访客

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