关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

Ubuntu系统服务器安装Nginx,并配置域名映射和https协议访问教程

发布时间:2020-06-22 22:35:38

Ubuntu系统服务器

Ubuntu系统服务器安装Nginx,并配置域名映射和https协议访问教程

在服务器安装好Ubuntu系统后我们才能安装Nginx

首先需安装nginx依赖库

1.安装gcc g++的依赖库,通过下面的指令来安装:

apt-get install build-essential

apt-get install libtool

2.安装pcre依赖库的指令:

sudo apt-get update

sudo apt-get install libpcre3 libpcre3-dev

3.安装zlib依赖库的指令:

apt-get install zlib1g-dev

4.安装ssl依赖库的指令

apt-get install openssl

更新 apt 源,安装nginx的指令:

sudo apt-get update

sudo apt-get install 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

  服务器的配置:

/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目录中的配置文件

/etc/nginx/snippets: 这个目录主要可以包含在其它nginx配置文件中的配置片段。重复的配置都可以重构为配置片段。

nginx

重启nginx配置指令:

service nginx restart

重新加载nginx配置指令:

nginx -s reload

// reload的原理:

// 1 - 首先检查配置语法是否有误

// 2 - 主进程尝试应用配置

// 3 - 如果成功:启动新工作进程,并关闭旧的进程

// 4 - 如果失败:主进程配置回滚

  最后打开服务器IP地址查看一下是否成功,能够看到 Nginx server就是成功了。

  然后需要配置一下域名映射

  后面的详细内容后面在详细说明,这里只是做个简单记录

  查看一下Nigx配置

  在nginx.conf中有两句话:

include /etc/nginx/conf.d/*.conf;  

// 这个是自己配置自定义的地方,在conf.d文件下建立不同的.conf文件即可。*通配符代表加载所有conf的文件到这个地方。

include /etc/nginx/sites-enabled/*;  

// 这个是默认配置,可以要可以注释掉,和上面的是一样的。

  在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协议

  接下来就是配置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服务。

Linux系统服务器相关内容推荐:Linux系统服务器如何允许远程连接到MySQL数据库服务器



/template/Home/Zkeys/PC/Static