我再也不毒奶自己了
之前说服务器好像稳定了,然而发现没有https。。。折腾了一晚上终于配好了nginx,也顺便学了点nginx
nginx的作用
- nginx是什么
Nginx是一款自由的、开源的、高性能的HTTP服务器和反向代理服务器;同时也是一个IMAP、POP3、SMTP代理服务器;Nginx可以作为一个HTTP服务器进行网站的发布处理,另外Nginx可以作为反向代理进行负载均衡的实现。 - 关于代理
- 正向代理
在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!
上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息
正向代理的作用: - 访问原来无法访问的资源,如Google - 可以做缓存,加速访问资源 - 对客户端访问授权,上网进行认证 - 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
- 反向代理
多个客户端给服务器发送的请求,Nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx扮演的就是一个反向代理角色。
客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。
反向代理,"它代理的是服务端,代服务端接收请求",主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息。
用nginx配置https访问
以halo为例,nginx版本为1.1.6
- 安装nginx
# 添加 Nginx 源
sudo rpm -Uvh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
# 安装 Nginx
sudo yum install -y nginx
# 启动 Nginx
sudo systemctl start nginx.service
# 设置开机自启 Nginx
sudo systemctl enable nginx.service
- 直接配置nginx.conf文件(没有使用halo官方的nignx配置)
- 终端输入
vi /etc/nginx/nginx.conf
- 具体配置
user nginx;
worker_processes 1;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
events {
worker_connections 768;
}
http {
##
# Basic Settings
##
server {
listen 443 ssl;
server_name 填写域名,带www和不带www,空格隔开;
ssl_certificate 填写证书位置,绝对路径;
ssl_certificate_key 填写秘钥位置,绝对路径;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Real-PORT $remote_port;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_pass http://127.0.0.1:8090;
}
}
server {
listen 80;
server_name 填写域名,带www和不带www,空格隔开;
rewrite ^(.*)$ https://$host$1 permanent;
}
}
其中,80端口下rewrite ^(.*)$ https://$host$1 permanent; 为重定向,即强制https访问。
- 修改完成后
# 检查配置是否有误
sudo nginx -t
# 重载 Nginx 配置
sudo nginx -s reload
检测过程没有报错就可以正常访问了
踩过的坑
- 一些较老的配置文件中会在监听443端口的配置中出现以下代码
server{
listen 443 ssl;
....
....
ssl on; //这样的写法只在1.1.5之前的版本中出现,所以说目前环境下是要删掉这句话的QAQ
....
}
<br/>
- 使用了halo官方教程安装和配置nginx后,nginx的config文件变成了
/etc/nginx/conf.d/halo.conf
而不是
/etc/nginx/nginx.conf
这种情况我通过重装nginx解决
1. 卸载nginx
nginx yum remove nginx
2. 进入/etc目录下,手动删除nginx目录
rm -rf /etc/nginx
3. 安装nginx
折腾一晚上终于搞定https访问了
Comments | 0 条评论