Ubuntu 安装 Nginx,并配置域名映射与https

一、安装 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
喜欢就支持一下吧
点赞14 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容