- 一, nginx.conf的配置
- 二, 域名.conf
- 三, ssl证书
- 四, 301跳转
- 五, LNMP一键安装包
- 六, 阿里云申请免费SSL证书
- 七, git报错
- 八, nginx权限问题
- 九, SSL不完全安全
- 另: nginx.conf配置如下
确实学的不牢固…. 之前跟着百度来的教程走了一遍也没有仔细学.最后 https://nav.duckduckk.top 前端代码为才越和金鹏所写,目前只是个beta版,我拿过来练手.过一段时间有空我来尝试把项目部署到docker以及学习数据库.这个过一段时间就不知道到什么时候了,懒->_->
一, nginx.conf的配置
- /usr/local/nginx/conf/nginx.conf
- 百度而来的注释
- LNMP一键安装包安装
- 安装后就这配置, 无需改动.
nginx.conf配置在本文最后面 传送. 博客字体太丑, 也可以直接去github markdown看传送
二, 域名.conf
- 代码及每行的注释放在私密仓库中.
- include vhost/*.conf;配置多域名(nginx.conf里面的)
三, ssl证书
SSL协议提供的安全通道有以下三个特性:
- 机密性:SSL协议使用密钥加密通信数据。
- 可靠性:服务器和客户都会被认证,客户的认证是可选的(Let’s Encrypt是每三个月需要重新认证一次)
- 完整性:SSL协议会对传送的数据进行完整性检查。
端口
- http服务使用80端口
- https服务使用443端口
四, 301跳转
参考https://help.aliyun.com/knowledge_detail/41467.html
301跳转多用于旧网址在废弃前转向新网址以保证用户的访问.
301跳转应用场景:
- 旧页面迁移到新页面的时候使用
- 切换到新域名
- 清理动态URL,切换到更短更友好的版本
- 预防内容重复问题(多篇相似文章页可跳转成一个版本)
为无 WWW 前缀的域名配置规则并加 301 跳转时输入以下内容:(在 域名.conf 文件中添加)
server
{
listen 80;
server_name server110.com;
rewrite ^/(.*) http://www.server110.com/$1 permanent;
}
五, LNMP一键安装包
安装链接
六, 阿里云申请免费SSL证书
- 购买Symantec 免费型DV ssl
- 下载nginx版证书
- 上传证书到服务器某个目录
- 在 域名.conf 里面添加相关配置
七, git报错
两个报错都遇到了…
参考https://blog.csdn.net/sinat_20177327/article/details/76062030
git remote add origin https://github.com/CongliYin/CSS.git
若出现:
fatal: remote origin already exists,
则
git remote rm origin
git remote add origin https://github.com/CongliYin/CSS.git
git push origin master
若出现:
failed to push som refs to…….
则
git pull origin master
八, nginx权限问题
参考https://www.jianshu.com/p/ca28ccb35b68
- 普通用户只能用1024以上的端口,1024以内的端口只能由root用户使用.
- nginx使用的80端口和443端口,都需要超级用户启动.
给非root用户添加特殊权限即可
chown root /usr/local/nginx/sbin/nginx
chmod u+s /usr/local/nginx/sbin/nginx
九, SSL不完全安全
参考https://blog.csdn.net/u013829518/article/details/80742700
用浏览器访问 https://nav.duckduckk.top 时发现浏览器地址栏没有小锁. 并提示 您与该网站的连接不完全安全.
这种情况是网站代码不符合SSL证书规范导致的
简单来说就是: 网站内所有的外部引入(CSS,JS,图片等的引入链接)都得是https, 而不能是http.
另: nginx.conf配置如下
user www www; #运行用户;若编译时指定了用户nginx,则用户为nginx;master进程要由root运行,因为要监听套接字;
worker_processes auto; #也可以设置成 worker_processes 2; 设置值和CPU核心数一致
error_log /home/wwwlogs/nginx_error.log crit; #日志位置和日志级别
pid /usr/local/nginx/logs/nginx.pid; #nginx的pid文件路径
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200; #指定一个worker进程最多打开的文件数,也可以是其他数字;
events #events段
{
use epoll; #使用epoll的I/O 模型。linux使用epoll,FreeBSD使用采用kqueue,window下不指定。epoll是多路复用IO(I/O Multiplexing)中的一种方式,但是仅用于linux2.6以上内核,可以大大提高nginx的性能
worker_connections 51200; #定义每个worker进程最大并发连接数, 理论上每台nginx 服务器的最大连接数为worker_processes*worker_connections。
multi_accept on; #打开同时接受多个新网络连接请求的功能。只能在events模块设置,Nginx服务器的每个工作进程可以同时接受多个新的网络连接,但是需要在配置文件中配置,此指令默认为关闭,即默认为一个工作进程只能一次接受一个新的网络连接,打开后几个同时接受多个,配置语法如下:
}
http
{
include mime.types; #文件扩展名与类型映射表
default_type application/octet-stream; #默认文件类型
server_names_hash_bucket_size 128; #这四行起到设定请求缓存的作用
client_header_buffer_size 32k;
large_client_header_buffers 4 32k;
client_max_body_size 50m;
sendfile on; #开启高效传输模式
tcp_nopush on; #激活tcp_nopush参数可以允许把httpresponse header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量
keepalive_timeout 60; #连接超时时间,单位是秒
tcp_nodelay on; #激活tcp_nodelay,内核会等待将更多的字节组成一个数据包,从而提高I/O性能
fastcgi_connect_timeout 300; #以下都是FastCGI相关参数,为了改善网站性能,减少资源占用,提高访问速度
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;
gzip on; #开启gzip压缩功能
gzip_min_length 1k;
gzip_buffers 4 16k;
gzip_http_version 1.1;
gzip_comp_level 2; #压缩级别,1最小最快,9最大最慢
gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss;
gzip_vary on;
gzip_proxied expired no-cache no-store private auth;
gzip_disable "MSIE [1-6]\.";
#limit_conn_zone $binary_remote_addr zone=perip:10m;
##If enable limit_conn_zone,add "limit_conn perip 10;" to server section.
server_tokens off; #隐藏nginx版本号,安全起见
access_log off; #不记录日志
server
{
listen 80 default_server; #监听80端口
#listen [::]:80 default_server ipv6only=on;
server_name _; #server_name localhost;中的localhost为域名
index index.html index.htm index.php; #用户访问web网站时的全局首页
root /home/wwwroot/default; #表示整个server虚拟主机内的根目录,所有当前主机中web项目的根目录
#error_page 404 /404.html;
# Deny access to PHP files in specific directory
#location ~ /(wp-content|uploads|wp-includes|images)/.*\.php$ { deny all; }
include enable-php.conf;
location /nginx_status
{
stub_status on; #nginx中的stub_status模块主要用于查看Nginx的一些状态信息.如果默认没有安装,需要编译安装.
access_log off; #不记录日志
}
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ #利用客户端来缓存网站上不经常变更的图片等内容,给服务器减压.
{
expires 30d; #把数据在客户端(貌似是浏览器)缓存30天
}
location ~ .*\.(js|css)?$
{
expires 12h; #同理,把js,css在客户端缓存12小时.
}
location ~ /.well-known { #使用Let's Encrypt证书部署HTTPS,进行一系列配置之后需要在nginx的server块里添加这段代码
allow all;
}
location ~ /\. #这样所有隐藏文件都不会以URL方式打开了,这里有很多种限制方式,日后需要进一步学习.
{
deny all;
}
access_log /home/wwwlogs/access.log; #配置access log日志的存储位置及文件
}
include vhost/*.conf; #nginx支持include配置文件,如果我们的域名都配置到nginx.conf.这个文件就会比较乱.所以直接拆分出来,分成不同的配置文件.再重启nginx即可.
}