开发者社区> 君哥聊编程> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

玩转Linux系统【五】安装Nginx搭建网站

简介: Nginx("engine x")是一款是由俄罗斯的程序设计师Igor Sysoev所开发高性能的 Web和 反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理服务器。 在高连接并发的情况下,Nginx是Apache服务器不错的替代品。
+关注继续查看

image.png

安装下载

下载

下载后上传至CentOS下的/usr/local目录下

  • wget直接下载

    $ cd /usr/local
    $ wget http://nginx.org/download/nginx-1.17.1.tar.gz

安装

  1. 解压安装包

    $ tar -zxvf nginx-1.17.1.tar.gz

    注意:nginx被解压到了/usr/local/nginx-1.17.1 目录下(不要把压缩包解压到/usr/local/nginx目录下,或者将解压后的目录重命名为nginx,因为nginx会默认安装到/usr/local/nginx目录下)

  2. 安装前准备

    安装前先安装nginx所需的依赖库,如果缺少依赖库,可能会安装失败

    $ yum install gcc-c++
    $ yum install pcre
    $ yum install pcre-devel
    $ yum install zlib 
    $ yum install zlib-devel
    $ yum install openssl
    $ yum install openssl-devel
  3. 进入nginx-1.17.1目录,并执行以下配置命令

    $ cd nginx-1.17.1
    $ ./configure

    configure操作会检测当前系统环境,以确保能成功安装nginx,如果出错,请检查上述安装前依赖包是否已经安装

    如果出现如下信息表示你需要安装依赖库

    • gcc库未安装提示

      checking for OS
           + Linux 3.10.0-123.el7.x86_64 x86_64
          checking for C compiler ... not found
          ./configure: error: C compiler cc is not found
    • PCRE库未安装提示

       ./configure: error: the HTTP rewrite module requires the PCRE library.
          You can either disable the module by using --without-http_rewrite_module
          option, or install the PCRE library into the system, or build the PCRE library
          statically from the source with nginx by using --with-pcre=<path> option.
    • zlib库未安装提示

       ./configure: error: the HTTP gzip module requires the zlib library.
          You can either disable the module by using --without-http_gzip_module
          option, or install the zlib library into the system, or build the zlib library
          statically from the source with nginx by using --with-zlib=<path> option.

    如果没有其他错误,则可进行下一步

  4. 执行make安装

    注意:下面2步会将nginx安装到/usr/local/nginx目录下,所以请勿占用nginx目录命名
    # make
    $ make install

    如果上述2步操作未报错,你可以切换到上一级目录,会发现nginx目录已经存在了

    $ cd ..
    $ cd nginx
    $ ls
  5. 配置nginx开机启动

    切换到/lib/systemd/system/目录,创建nginx.service文件vim nginx.service

    $ cd /lib/systemd/system/
    $ vim nginx.service

    添加如下内容

    [Unit]
    Description=nginx 
    After=network.target 
       
    [Service] 
    Type=forking 
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecReload=/usr/local/nginx/sbin/nginx reload
    ExecStop=/usr/local/nginx/sbin/nginx quit
    PrivateTmp=true 
       
    [Install] 
    WantedBy=multi-user.target

    退出并保存文件,执行如下名使nginx开机启动

    $ systemctl enable nginx.service
    # 启动nginx
    $ systemctl start nginx.service
    
    # 结束nginx
    $ systemctl stop nginx.service
    
    # 重启nginx
    $ systemctl restart nginx.service
  6. 验证是否安装成功

    # 你要将80端口添加到防火墙中
    $ firewall-cmd --zone=public --add-port=80/tcp --permanent
    #重新加载
    $ firewall-cmd --reload
    
    在浏览器访问如下地址
    http://192.168.2.204/

    image.png

云上环境ECS

让外网通过ip+端口的方式访问

以下内容是基于我提供了一个7777端口的服务,需要开启一个7777端口的web服务后进行,或者将下方的7777端口改为nginx默认主页的80端口也可以

  • 进入服务器安全组
    image.png

    image.png

  • 添加7777端口为0.0.0.0/0

    image.png

  • 外网通过ip + 端口的方式访问,查看效果

    image.png

Nginx域名http版配置

  1. nginx配置ssl

    # 进入/usr/local/nginx/conf/目录
    $ vim nginx.conf
    
    # 在最后一行大括号结束之前,加入以下配置,并将it235换成你的域名
        # http域名配置
        server {
            listen 80;
            server_name www.it235.com it235.com;
            
            # 域名默认映射到 http://127.0.0.1:7777
            location / {
                   proxy_pass http://127.0.0.1:7777;
                   proxy_redirect off;
                   proxy_set_header Host $host;
                   proxy_set_header X-Real-IP $remote_addr;
                   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                   proxy_set_header Upgrade $http_upgrade;
                   proxy_set_header Connection "upgrade";
    
                   root html;
                   index index.html index.html;
            }
        
        }
  2. 重新加载nginx配置文件

    # 验证nginx配置文件是否正确
    $ /usr/local/nginx/sbin/nginx -t
    nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
    nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
      
    # 重新加载nginx配置文件,重新加载才会生效
    $ /usr/local/nginx/sbin/nginx -s reload
  3. 阿里云安全组配置80端口为0.0.0.0/0
  4. 还需要去做域名解析

    • A记录
      主要关注A记录,设置到一个具体的服务器IP上(一定是公网IP,192.168.1.3)
    • CNAME记录

SSL证书(https)配置

  1. 提供SSL证书服务
    在配置了SSL证书后,重新启动报如下错误,所以需要提前安装SSL模块

    [root@iz2zehvxttbua2f45dp7ihz sbin]# ./nginx -s reload
    nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/local/nginx/conf/object.nginx.conf:14

    表示当前Nginx缺少SSL模块,我们可以查看nginx版本

    [root@iz2zehvxttbua2f45dp7ihz sbin]# ./nginx -V
    nginx version: nginx/1.17.1
    built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) 
    configure arguments:

    如果带有SSL模块,在上面输出的信息最后一行应该有如下参数,如下图

    --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module

    image.png

    那应该怎么添加中呢?请看如下操作

  2. 添加SSL模块

    • 切换到源码安装包,就是带版本的那个nginx文件夹

      # cd /usr/local/nginx-1.17.1
    • 执行如下命令

      # ./configure --prefix=/usr/local/nginx --with-http_stub_status_module --with-http_ssl_module
    • 配置完成后执行如下命令

      # make
      # 切忌,只执行make,不要执行make install,否则会覆盖
    • 停止服务,备份原来的nginx.sh文件

      # systemctl stop nginx.service
      # cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
    • 将源码包中的nginx文件覆盖到正在使用的nginx执行文件

      # cp -f /usr/local/nginx-1.17.1/objs/nginx /usr/local/nginx/sbin/nginx
    • 重启并查看版本

      # systemctl start nginx.service
      # /usr/local/nginx/sbin/nginx -V

      image.png

  • 阿里云免费证书
    申请后可以下载,然后上传到nginx目录下做映射
    image.png

    image.png

  • Let's Encrypt免费证书,一次申请只能使用3个月,到期后需要手动续期
  • Nginx配置证书

    # 进入/usr/local/nginx/conf/目录
    $ vim nginx.conf
    
    # 在最后一行大括号结束之前,加入以下配置,并将it235换成你的域名
        # 所有http的请求,统一发到https请求上
        server {
            listen 80;
            server_name www.it235.com *.it235.com;
            rewrite ^(.*)$  https://$host$1 permanent;
        }
    
        # 未带www的请求,统一分发到https://www上
        server {
            listen 80;
            listen 443 ssl;
            server_name  it235.com;
            return 301 https://www.it235.com$request_uri;
        }
    
        # https 请求处理
        server {
            listen 443 default_server ssl;
            server_name  www.it235.com;
            ssl_certificate /etc/letsencrypt/live/it235.com/fullchain.pem;
            ssl_certificate_key /etc/letsencrypt/live/it235.com/privkey.pem;
    
            large_client_header_buffers 4 16k;
            client_max_body_size 30m;
            client_body_buffer_size 128k;
    
            # 域名默认映射到 http://127.0.0.1:7777
            location / {
                   proxy_pass http://127.0.0.1:7777;
                   proxy_redirect off;
                   proxy_set_header Host $host;
                   proxy_set_header X-Real-IP $remote_addr;
                   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                   proxy_set_header Upgrade $http_upgrade;
                   proxy_set_header Connection "upgrade";
    
                   root html;
                   index index.html index.html;
    
            }
        }
    # 验证nginx配置文件是否正确
    $ /usr/local/nginx/sbin/nginx -t
    
    # 重新加载nginx配置文件,重新加载才会生效
    $ /usr/local/nginx/sbin/nginx -s reload
  • 最终效果,访问https://www.it235.com要能成功,并且加上锁

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Nginx 虚拟主机 VirtualHost 配置
Nginx 是一个轻量级高性能的 Web 服务器, 并发处理能力强, 对资源消耗小, 无论是静态服务器还是小网站, Nginx 表现更加出色, 作为 Apache 的补充和替代使用率越来越高. 我在《Apache 虚拟主机 VirtualHost 配置》介绍了在不同操作系统上使用 Apahce 虚拟...
1339 0
nginx配置和安装
本篇文章主要讲nginx的一些常用配置。 功能 1.Nginx介绍 2.Ningx应用场景 3.Windows环境下安装Nginx 4.什么是nginx反向代理 5.nginx访问权重的设置. 6.Nginx如何防止服务器宕机以及解决延迟率高的问题 7.nginx如何解决跨域问题 8.Nginx如何避免防盗链 9.Nginx防止DDOS(对请求进行限制) 一、nginx入门 1.Nginx介绍? nginx是一款高性能的http 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
1149 0
Nginx的配置
在/usr/local/nginx/conf目录下nginx.conf文件是nginx的配置文件。 Html在nginx里 通过端口区分虚拟机 在nginx.
1453 0
Centos7安装配置ELK(Elasticsearch + Logstash + Kibana)分析Nginx日志简单单点配置
ELK的架构原理: logstash收集nginx日志,并对日志进行过滤拆分,并将处理后的结构化数据输出给elastcsearch,es对日志进行存储和索引构建,kibana提供图形界面及对es 查询api进行了封装,提供友好的查询和统计页面。
4556 0
+关注
君哥聊编程
多年一线资深coder,性能调优小哥
文章
问答
文章排行榜
最热
最新
相关电子书
更多
ECS系统指南之Linux系统诊断
立即下载
《Nginx 代理系统常用手册》
立即下载
ECS运维指南 之 Linux系统诊断
立即下载