CentOS 7 nginx 安装和部署

nginx的配置和简单使用

前端项目经常需要部署在公网服务器上,大部分人都是用 nginx 作为 web 服务器,但经常把时间浪费在对 nginx 的安装和配置上。本片文章,简要介绍了如何在 CentOS 7 上部署和配置 nginx。

nginx的安装

CentOS/RHEL

在CentOS上采用的是yum来管理软件的安装,根据nginx官方文档配置nginx的yum源仓库,具体操作如下:

# 创建nginx.repo文件
vim /etc/yum.repos.d/nginx.repo

# nginx.repo文件元数据如下
[nginx]
name=nginx repo # 源名称,可省略
baseurl=http://nginx.org/packages/mainline/OS/OSRELEASE/$basearch/ # 仓库地址,必要字段
gpgcheck=0 # 是否开启校验,“0”表示不开启,“1”表示开启
enabled=1 # 是否允许使用,“0”标识不使用,“1”表示使用

# 替换其中的baseurl中的OS/OSRELEASE/$basearch
# 例如,再CentOS 7下可以直接复制以下配置使用
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/mainline/centos/7/$basearch/
gpgcheck=0
enabled=1

下面开始安装nginx,具体命令如下:

yum -y install nginx # 安装nginx,此实yum会根据以上步骤配置的url下载并安装nginx
systemctl enable nginx # 允许开机自动启动nginx
systemctl start nginx # 启动nginx
# 如果linux系统的防火墙是开启的,需要放行80端口
# 还需要注意,如果是公网上的服务器,例如阿里云,同样需要在安全组中放行80端口
firewall-cmd --permanent --zone=public --add-port=80/tcp # 将放行80端口的配置写入防火墙配置文件
firewall-cmd --reload # 重新加载防火墙配置文件

配置

nginx运行用户配置

当我们将nginx运行的用户配置为root时,nginx程序将能够获取系统几乎任意文件夹下的文件,因此,托管的静态文件可以放在任意位置。

vim /etc/nginx/nginx.conf
# 找到 'user nginx;' ,改为
user root;
# 保存后退出
systemctl restart nginx # 重启nginx,使配置文件生效

上传前端代码压缩包

此步骤也可以通过 FileZilla 等软件连接服务器进行文件上传。

# 在xshell下使用rz命令,可直接通过xshell上传文件,如果没有rz命令,执行以下命令安装
yum install -y lrzsz

# 安装解压unzip
yum install -y unzip

# 解压前端代码
unzip frontend.zip

主配置文件简介

运行vim /etc/nginx/nginx.conf打开主配置文件(如果提示没有vim命令,请先安装vim,命令为yum install -y vim)。如下面的代码块所示。

# 运行nginx的用户
user  root;
worker_processes  1;

error_log  /var/log/nginx/error.log warn;
pid        /var/run/nginx.pid;


events {
    worker_connections  1024;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    # 日志的格式
    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    #tcp_nopush     on;

    keepalive_timeout  65;

    #gzip  on;
    
    # 将所有的server定义,通过include指令包含进此http模块
    include /etc/nginx/conf.d/*.conf;
}

在此,我们需要特别注意include /etc/nginx/conf.d/*.conf;,意味着,我们在/etc/nginx/conf.d/目录下创建的所有以.conf接为的文件都会被自动包含进主配置文件。这是一种很优雅的做法,能够将配置文件模块化,防止将所有的配置写在主配置文件难以阅读和维护。

nginx 默认的server配置

server {
    listen       80;
    server_name  localhost;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html;
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    #
    #location ~ \.php$ {
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht {
    #    deny  all;
    #}
}

由上述对nginx配置文件的描述,我们了解,如果需要创建自己的服务器配置,只需要复制default.conf,更改名称,写入配置即可。接下来我们创建自己的配置文件。

创建配置文件

# 切换目录至nginx的配置虚拟主机的文件下
cd /etc/nginx/conf.d

# 复制默认的配置文件,例如我要创建vue.conf
cp default.conf vue.conf

编辑配置文件

配置虚拟主机

server {
    listen       80; ## 监听的端口号,如果修改,请防火墙放行对应端口
    server_name  localhost; ## 监听的hostname,即域名或者ip地址,如果配置了此项,nginx会严格匹配,如果server_name不匹配,那么默认会转发到default_server

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;

    location / {
        root   /usr/share/nginx/html; ## 修改为nginx
        index  index.html index.htm;
    }

    #error_page  404              /404.html;

    # redirect server error pages to the static page /50x.html
    #
    error_page   500 502 503 504  /50x.html;
    location = /50x.html {
        root   /usr/share/nginx/html;
    }

    # proxy the PHP scripts to Apache listening on 127.0.0.1:80
    #
    #location ~ \.php$ {
    #    proxy_pass   http://127.0.0.1;
    #}

    # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
    # 
    #location ~ \.php$ {   
    #    root           html;
    #    fastcgi_pass   127.0.0.1:9000;
    #    fastcgi_index  index.php;
    #    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    #    include        fastcgi_params;
    #}       

    # deny access to .htaccess files, if Apache's document root
    # concurs with nginx's one
    #
    #location ~ /\.ht { 
    #    deny  all;
    #} 
}  

重启nginx即可完成配置。直接访问你的服务器ip地址即可访问网页了。

配置ssl证书,并将http转发到https

  • SSL证书配置如下:
# 以下属性中以ssl开头的属性代表与证书配置有关,其他属性请根据自己的需要进行配置。
server {
        listen 443 ssl;   #SSL协议访问端口号为443。此处如未添加ssl,可能会造成Nginx无法启动。
        server_name example.example.com;  #此处域名修改为您证书绑定的域名
        ssl_certificate /etc/nginx/ssl/3417036_example.example.com.pem;   #将domain name.pem替换成您证书的文件名。
        ssl_certificate_key /etc/nginx/ssl/3417036_example.example.com.key;   #将domain name.key替换成您证书的密钥文件名。
        ssl_session_timeout 5m;
        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;  #使用此>加密套件。
        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;   #使用该协议进行配置。
        ssl_prefer_server_ciphers on;
location / {
        alias /root/webar/backend/index/;   #站点目录。
        }
}
  • 将http转发到https
server {
    listen 80;
    server_name localhost;   #将localhost修改为您证书绑定的域名
    return 301 https://$host$request_uri;   #将所有http请求通过rewrite重定向到https。
}
  • 配置http2
    在配置完https之后,直接在listen指令后加上http2即可,如下所示:
listen 443 ssl http2;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341