云服务器+nginx配置实战

栏目: 服务器 · Nginx · 发布时间: 7年前

内容简介:双十一了,阿里云推出了史上最优惠的云服务器产品(点击这里查看详情),1核2G新用户只需要99元/年,一次性买3年只需要不到300元,价格确实极大的优惠。要是老用户的话可以用新开一个账号,用亲戚朋友的身份证认证一下也能享受1折优惠,加入我的战队(点击这里查看详),邀请一个人差不多能瓜分战队的很多前端的小伙伴买了云服务器后,担心不会配置,毕竟很多的前端还不是很会配置nginx,这里小编详细讲解下我买的阿里云服务器配置的过程。

双十一了,阿里云推出了史上最优惠的云服务器产品(点击这里查看详情),1核2G新用户只需要99元/年,一次性买3年只需要不到300元,价格确实极大的优惠。

云服务器+nginx配置实战

要是老用户的话可以用新开一个账号,用亲戚朋友的身份证认证一下也能享受1折优惠,加入我的战队(点击这里查看详),邀请一个人差不多能瓜分战队的 50元分红+50元现金红包+25%返现 。打个比方, 假如你是新用户,你买了一个3年的云服务器一共300块,买过后,你成功邀请一人(下单3年的云服务器)就可分50(战队红包) + 50(现金红包) + 300*25%(返利红包)。相当于买服务器的钱回来了一半(折上5折) ,听着是不是很诱惑人,进来了解下吧;目前战队排名是top15,后名次靠前的话还有更大的优惠。 m.aliyun.com/act/team111…

云服务器+nginx配置实战

nginx配置

连接服务器

很多前端的小伙伴买了云服务器后,担心不会配置,毕竟很多的前端还不是很会配置nginx,这里小编详细讲解下我买的阿里云服务器配置的过程。

点击上面链接就可参团购买,购买过程中推荐系统选择 CentOSUbuntu 系统。Ubuntu系统用户占用率高,所以文档自然也多,比较适合新手;CentOS比较适合企业和商用,一般看你们公司用的都是CentOS系统的; 具体2这的区别可查看这里 小编买的是 Ubuntu 16.04 64位 。其他的选项选择默认就是,地区只要是国内的都很快。

买好后,点击头像=>选择产品服务=>云服务器,即可看到购买过的服务器产品。基本信息,配置信息,对cpu的监控一目了然。买阿里云的一个主要原因还是阿里云盾安全。

云服务器+nginx配置实战

可以在 更多 里面修改远程连接密码和重置服务器密码,修改好后,尝试远程连接下,先输入远程连接密码,后登陆用户名(root)、密码即可。

当然,也可直接使用命令行链接 :

sudo ssh 服务器外网ip
输入电脑密码,输入服务器密码
复制代码
云服务器+nginx配置实战

除此之外,你也可用 工具 链接,对于 lunix 命令不是很熟悉的小伙伴比较实用。 这里推荐用 TransmitFilezilla 其他的都一样,用户名输入 root ,端口选择 22 即可。

安装Nginx

更新ubuntu软件源

sudo apt-get update
sudo apt-get install -y python-software-properties software-properties-common
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
复制代码

安装nginx

sudo apt-get install nginx
# 检查是否安装成功
nginx -v
复制代码

安装好的文件位置:

/usr/sbin/nginx:主程序
/etc/nginx:存放配置文件
/usr/share/nginx:存放静态文件
/var/log/nginx:存放日志
复制代码

其实从上面的根目录文件夹可以知道,Linux系统的配置文件一般放在 /etc ,日志一般放在 /var/log ,运行的程序一般放在 /usr/sbin 或者 /usr/bin 。当然,如果要更清楚Nginx的配置项放在什么地方,可以打开 /etc/nginx/nginx.conf

安装其他必要工具

安装nodejs

sudo apt-get install nodejs
sudo apt install nodejs-legacy
sudo apt install npm
复制代码

更新npm的包镜像源,方便快速下载

sudo npm config set registry https://registry.npm.taobao.org
sudo npm config list
复制代码

全局安装n管理器(用于管理nodejs版本)

sudo npm install n -g
复制代码

安装最新的nodejs(stable版本)

sudo n stable
# 检查是否安装成功
node -v
npm -v
复制代码

安装webpack

npm install webpack-cli -g
npm install webpack -g
复制代码

还有的工具后续补上

配置nginx

nginx安装完成后,配置文件为 /etc/nginx/nginx.conf/etc/nginx/conf.d/default.conf

cd /etc/nginx
vim nginx.conf
cd /etc/nginx/conf.d
vim default.conf
复制代码

自定义nginx.conf 配置

#运行用户,默认即是nginx,可以不进行设置
user root;
#Nginx进程,一般设置为和CPU核数一样
worker_processes 1;
#进程pid存放位置
pid /run/nginx.pid;

events {
    worker_connections  1024; # 单个后台进程的最大并发数
    # multi_accept on;
}

http {
    ##
    # Basic Settings
    ##
    sendfile on; #开启高效传输模式
    tcp_nopush on; #减少网络报文段的数量
    tcp_nodelay on;
    keepalive_timeout 65; #保持连接的时间,也叫超时时间
    types_hash_max_size 2048;
    # server_tokens off;

    # server_names_hash_bucket_size 64;
    # server_name_in_redirect off;

    include /etc/nginx/mime.types; #文件扩展名与类型映射表
    default_type application/octet-stream; #默认文件类型

    ##
    # SSL Settings
    ##

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE
    ssl_prefer_server_ciphers on;

    ##
    # Logging Settings
    ##

    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    ##
    # Gzip Settings
    ##

    gzip on; #开启gzip压缩
    gzip_disable "msie6";

    # gzip_vary on;
    # gzip_proxied any;
    # gzip_comp_level 6;
    # gzip_buffers 16 8k;
    # gzip_http_version 1.1;
    # gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

    ##
    # Virtual Host Configs
    ##

    include /etc/nginx/conf.d/*.conf; #包含的子配置项位置和文件
    # include /etc/nginx/sites-enabled/*;
}

#mail {
#    # See sample authentication script at:
#    # http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript
#
#    # auth_http localhost/auth.php;
#    # pop3_capabilities "TOP" "USER";
#    # imap_capabilities "IMAP4rev1" "UIDPLUS";
#
#    server {
#        listen     localhost:110;
#        protocol   pop3;
#        proxy      on;
#    }
#
#    server {
#        listen     localhost:143;
#        protocol   imap;
#        proxy      on;
#    }
#}
复制代码

自定义default.conf 配置

server {
        listen       80;   #配置监听端口
        server_name  localhost;  #配置域名
        #charset koi8-r;
        #access_log  /var/log/nginx/host.access.log  main;

        location / {
            #服务默认启动目录
            root /usr/share/nginx/html/pc;   #pc
            # nginx适配pc和app设备
            if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
                root /usr/share/nginx/html/app;  #app
            }
            index  index.html;    #默认访问文件
            allow  all; #允许访问的ip
            # deny   all;  #拒绝访问的ip
        }

        #  redirect  error pages to the static page /404.html
        error_page  404   /static/html/404/404.html;   # 配置404页面
        # redirect server error pages to the static page /50x.html
        error_page   500 502 503 504  /static/html/404/500.html;   #错误状态码的显示页面,配置后需要重启

        # ^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,
        # 可以被规则^~ /static/ /aa匹配到(注意是空格)。
        location ^~ /static/ {
            root /usr/share/nginx/html;
            allow  all; #允许访问的ip
            # deny   all;  #拒绝访问的ip
        }

        location = /50x.html {
            root /usr/share/nginx/html/pc/;   #pc
            # nginx适配pc和app设备
            if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
                root /usr/share/nginx/html/app/;  #app
            }
        }

        # 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;
        #}
    }
复制代码

自定义默认目录

我们服务的默认目录放在 /usr/share/nginx/html 了下。

cd /usr/share/nginx/html
ls
复制代码

假如你要定义服务器的默认访问目录,修改 location / 中的root即可,不过需要开通下你自定义目录的权限。

/root/www 是自定义目录为例

# 需要一层层分别开通权限
chmod -R 777 /root
chmod -R 777 /root/www
复制代码

假如你使用的是 Transmit 等服务器工具,也可用工具查看

云服务器+nginx配置实战

自定义错误页面

# redirect  error pages to the static page /404.html
error_page  404   /static/html/404/404.html;   # 配置404页面
# redirect server error pages to the static page /50x.html
error_page   500 502 503 504  /static/html/404/500.html;   #错误状态码的显示页面,配置后需要重启
复制代码

然后在你默认或者自定义的服务器目录下,根据你的错误页配置,新建相关的页面即可。

Nginx访问权限和路径匹配规则

在匹配规则里面,有2个字段可以控制这个规则下的访问权限

location / {
    allow  all; #允许访问的ip
    # deny   all;  #拒绝访问的ip
}
复制代码

实际情况中,访问权限的控制还是比较复杂的,例如,要求服务器 static (静态目录)所有用户都能访问,且,重新定义访问路径,我们需要location块来完成相关的需求匹配。

# ^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,
# 可以被规则^~ /static/ /aa匹配到(注意是空格)。
location ^~ /static/ {
root /usr/share/nginx/html;
allow  all; #允许访问的ip
# deny   all;  #拒绝访问的ip
}
复制代码

对于nginx路径匹配规则,也需要简单的了解一下

  • = 表示精确匹配
  • ^~ 表示uri以某个常规字符串开头,大多情况下用来匹配url路径,nginx不对url做编码,因此请求为/static/20%/aa,可以被规则^~ /static/ /aa匹配到(注意是空格)。
  • ~ 正则匹配(区分大小写)
  • ~* 正则匹配(不区分大小写)
  • !~和!~*分别为区分大小写不匹配及不区分大小写不匹配 的正则
  • / 任何请求都会匹配

符号的优先级

首先匹配 =,其次匹配^~, 其次是按文件中顺序的正则匹配,最后是交给 / 通用匹配。当有匹配成功时候,停止匹配,按当前匹配规则处理请求。

Nginx反向代理的设置

后续补充。

Nginx适配PC或移动设备

如上述配置:

#服务默认启动目录
root /usr/share/nginx/html/pc;   #pc
# nginx适配pc和app设备
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
root /usr/share/nginx/html/app;  #app
}
复制代码
#服务默认启动目录
root /usr/share/nginx/html/pc;   #pc
# nginx适配pc和app设备
if ($http_user_agent ~* '(Android|webOS|iPhone|iPod|BlackBerry)') {
root /usr/share/nginx/html/app;  #app
}
复制代码

可用app和pc访问我的服务器查看效果47.99.212.100

配置阿里云安全组

从上面的配置文件可以看出,nginx服务监听的是80端口,所以记得到ECS实例一下打开端口。步骤如下:

  • 进入阿里云控制台,并找到ECS实例。
  • 点击实例后边的"更多"
  • 点击"网络和安全组" ,再点击"安全组配置"
  • 选择"安全组列表",再点击"安全组配置",再点击"加入安全组规则"
  • 进行80端口的设置,具体设置如图。
云服务器+nginx配置实战

nginx 相关命令

在真个服务器做nginx配置的过程中,我们 ①先安装nginx; 安装好后,检查是否安装成功; ②然后开始做相关nginx配置③配置完后检查配置是否正常④然后启动nginx⑤后续每次改动nginx配置都需重启nginx

启动nginx 服务

#方法一
nginx
#方法二
systemctl start nginx.service
复制代码

查看所有启动的nginx进程

ps aux | grep nginx
复制代码

停止Nginx服务

#方法一
nginx  -s stop
#方法二
nginx -s quit
#方法三
killall nginx
复制代码

检查nginx配置是否正常

nginx -t
复制代码

重启nginx服务

sudo nginx -s reload
复制代码

查看端口占用情况

netstat -tlnp
复制代码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Web Applications (Hacking Exposed)

Web Applications (Hacking Exposed)

Joel Scambray、Mike Shema / McGraw-Hill Osborne Media / 2002-06-19 / USD 49.99

Get in-depth coverage of Web application platforms and their vulnerabilities, presented the same popular format as the international bestseller, Hacking Exposed. Covering hacking scenarios across diff......一起来看看 《Web Applications (Hacking Exposed)》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具