一、安装 Nginx
1、首先需安装nginx依赖库
# 安装gcc g++的依赖库
apt-get install build-essential
apt-get install libtool
# 安装pcre依赖库
sudo apt-get update
sudo apt-get install libpcre3 libpcre3-dev
# 安装zlib依赖库
apt-get install zlib1g-dev
# 安装ssl依赖库
apt-get install openssl
2、更新 apt 源,安装nginx
# 安装nginx
sudo apt-get update
sudo apt-get install nginx
3、验证安装
# 启动服务
systemctl start nginx
# 查看服务是否成功
systemctl status nginx
# 输出
nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: en
Active: active (running) since Fri 2018-12-07 13:10:57 CST; 6min ago
Main PID: 8634 (nginx)
CGroup: /system.slice/nginx.service
├─8634 nginx: master process /usr/sbin/nginx -g daemon on; master_pro
└─8635 nginx: worker process
打开服务器IP地址查看一下是否成功,能够看到 Nginx server就是成功了。
4、服务器的配置
/etc/nginx: nginx配置文件目录。所有的nginx配置文件都在这里。
/etc/nginx/nginx.conf: Nginx的主配置文件. 可以修改他来改变nginx的全局配置。
/etc/nginx/sites-available/: 这个目录存储每一个网站的"server blocks"。nginx通常不会使用这些配置,除非它们陪连接到 sites-enabled 目录 (see below)。一般所有的server block 配置都在这个目录中设置,然后软连接到别的目录 。
/etc/nginx/sites-enabled/: 这个目录存储生效的 "server blocks" 配置. 通常,这个配置都是链接到 sites-available目录中的配置文件
include /etc/nginx/conf.d/*.conf;
// 这个是自己配置自定义的地方,在conf.d文件下建立不同的.conf文件即可。*通配符代表加载所有conf的文件到这个地方。
include /etc/nginx/sites-enabled/*;
// 这个是默认配置,可以要可以注释掉,和上面的是一样的。
5、常用命令
# 重启nginx
service nginx restart
#重新加载配置
nginx -s reload
// reload的原理:
// 1 - 首先检查配置语法是否有误
// 2 - 主进程尝试应用配置
// 3 - 如果成功:启动新工作进程,并关闭旧的进程
// 4 - 如果失败:主进程配置回滚
二、配置https
在conf.d中创建一个后缀为.conf的文件,然后在里面配置
server {
listen 80; // 端口
server_name www.shmaur.com; // 域名地址
root /var/www/html; // 资源访问路径
index index.html; // 加载的页面
location / {
proxy_pass http://127.0.0.1:3000; #代理地址,这个可以是PM2的服务地址
proxy_set_header X-Real-IP $remote_addr; #其中这个X-real-ip是一个自定义的变量名,名字可以随意取,这样做完之后,用户的真实ip就被放在X-real-ip这个变量里了,然后,在web端可以这样获取
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; #我们先看看这里有个X-Forwarded-For变量,这是一个squid开发的,用于识别通过HTTP代理或负载平衡器原始IP一个连接到Web服务器的客户机地址的非rfc标准,如果有做X-Forwarded-For设置的话,每次经过proxy转发都会有记录,格式就是client1, proxy1, proxy2,以逗号隔开各个地址,由于他是非rfc标准,所以默认是没有的,需要强制添加,在默认情况下经过proxy转发的请求,在后端看来远程地址都是proxy端的ip 。也就是说在默认情况下我们使用request.getHeader("X-Forwarded-For")获取不到用户的ip,如果我们想要通过这个变量获得用户的ip
proxy_set_header Host $http_host; #这一行的作用是把原http请求的Header中的Host字段也放到转发的请求里。如果不加这一行的话,nginx转发的请求header里就不会有Host字段,而服务器是靠这个Host值来区分你请求的是哪个域名的资源的。
proxy_set_header X-Nginx-Proxy true;
proxy_redirect off;
}
然后打开网址看看,有没有成功。
接下来就是配置https
server {
listen 443 ssl;
server_name www.shmaur.com;
root /var/www/html;
ssl on;
ssl_certificate /root/xxxx/xxxxxxx.pem; //这里是证书pem路径地址
ssl_certificate_key /root/xxxx/xxxxxxx.key; //这里是证书key路径地址
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDH:AESGCM:HIGH:!RC4:!DH:!MD5:!3DES:!aNULL:!eNULL;
ssl_prefer_server_ciphers on;
location / {
}
}
最后配置完成。正常访问前端与后台API服务。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容