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

nginx配置指引.md

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

安装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

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

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

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

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

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

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

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

特此声明。

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

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

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

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

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

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

哈哈哈!大神Note3 终于可以把 酷派系统 直接刷成 360 OS 2.0了哈哈哈!大神Note3 终于可以把 酷派系统 “砖头”直接刷成 360 OS 2.0了最新版的刷机软件就可以了,直接把 酷派系统 或着 酷派系统 “砖头”直接刷机刷成 360 OS 2.0!下面重点:刷机软件 要是如下图,...

在Centos 7 上安装Zabbix监控

在Centos 7 上安装Zabbix监控

一、关闭selinux和iptables && 安装Zabbix rpm包仓库 && 安装zabbix-server-mysql和zabbix-web-mysql && 安装并且启动mysql5.6及 数据库信息安全初始化、设置数据库root密码等[r...

cnetos系统mysql配置my.cnf文件,跳过密码认证登录并设置远程登录(不一定有效)

cnetos系统mysql配置my.cnf文件,跳过密码认证登录并设置远程登录(不一定有效)

cnetos手动安装mysql没有my.cnf配置文件时,1.可以从其它服务器把my.cnf文件拷贝到需要的服务器上,2.可以touch创建my.cnf文件这边是直接使用touch命令my.cnf文件的,创建在/etc/目录下[root@host ~]#  touch&...

发表评论

访客

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