nginx 使用总结

服务器经常使用的操作系统就是CentOS7,下面对 CentOS7 下使用 nginx 做个总结,以下内容整理自网络。

1. 安装最新版 nginx

# 安装epel-release源
sudo yum install epel-release

# 设置ningx安装源
sudo vim /etc/yum.repos.d/nginx.repo

# 写入文件内容
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0
enabled=1

# 安装nginx
sudo yum install nginx -y

2. nginx 配置简介

安装完成后,nginx 的配置文件位于 “/etc/nginx” 目录下。
发布文件位于 “/usr/share/nginx/html” 目录下。
主配置文件"/etc/nginx/nginx.conf"中使用包含指令
“include /etc/nginx/conf.d/*.conf;”
包含了附加配置文件,通常,我们会把新的配置信息放到附加配置文件中。

常用命令


#启动nginx
sudo nginx

#停止nginx
sudo nginx -s stop

#测试配置文件是否正确
sudo nginx -t

#重新加载配置文件
sudo nginx -s reload

3. 隐藏版本号

为了服务器安全,通常会隐藏nginx版本号,防止针对于特定版本的攻击。

http{
    ...

    #隐藏版本信息
    server_tokens  off;

    ...
}

4. 启用 gzip

启用 gzip 可以大大加上网络资源传输消耗。


http{
    ...

    gzip on;
    gzip_min_length 1k;
    gzip_vary on;
    gzip_buffers 16 8k;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png;

    ...
}

5. 发布 web 网站

如果不配置 “location /”,即不配置默认web站点,是不需要修改nginx配置文件的,只要把要发布的站点目录放到"/usr/share/nginx/html"目录下(此路径为nginx站点发布默认根路径),便可以直接通过 “http://主机名:端口号/web站点目录” 访问发布的站点。

如果配置了默认站点,在发布其他站点时,需要指定站点根路径,但是nginx 配置文件中,类似" root /usr/share/nginx/html/web1" 只能出现一次,其他的根路径指定需要使用"alias" 字段代替 “root” 字段。


#主机默认站点
location / {
    root   /usr/share/nginx/html/web1;
    index  index.html index.htm;
}


#站点2
location /web2 {
    #使用 alias 指定站点根路径
    alias   /usr/share/nginx/html/web2;
    index  index.html index.htm;
}


#站点3
location /web3 {
    #使用 alias 指定站点根路径
    alias   /usr/share/nginx/html/web3;
    index  index.html index.htm;
}


6. 区分电脑端和移动端访问站点

 location / {
        # First attempt to serve request as file, then
        # as directory, then fall back to displaying a 404.
        try_files $uri $uri/ =404;

        location / {
            root /usr/share/nginx/html/web;

            #如果是手机移动端访问内容
            if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC\-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT\-)|(SonyEricsson)|(NEC\-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi\-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG\-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC\-)|(SED\-)|(EMOL\-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" )
            {
                    root /usr/share/nginx/html/mobile;
            }

            index index.html index.htm;
    }
}


7.反向代理


#服务反向代理
#以"/"表示绝对路径,将相关请求都转发到该服务
location /myserver/ {
	proxy_set_header Host $host;
	proxy_set_header X-Real-Ip $remote_addr;
	proxy_set_header X-Forwarded-For $remote_addr;

	proxy_pass http://localhost:8065/myserver/;
}



#websocket 反向代理
location /message_transfer/ {
    proxy_set_header Host $host;
    proxy_set_header X-Real-Ip $remote_addr;
    proxy_set_header X-Forwarded-For $remote_addr;

    #websocket 转发需要加上 upgrade 配置
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection "upgrade";

    proxy_pass http://localhost:18080/message_transfer/;
}


8.负载均衡

使用 “upstream” 配置负载均衡服务器,upstream 指定了服务器列表,“weight” 表示权重,权重越大,服务器承担的任务越多。

#docloud core 服务负载均衡
upstream docloud_core_servers {
   server docloud001:8091  weight=1;
   server docloud002:8091  weight=1;
   server docloud003:8091  weight=1;
   server docloud004:8091  weight=1;
   server docloud005:8091  weight=1;
}

server{
    ...

    #服务转发配置 
    location /dataeye/ {
        proxy_set_header Host $host;
        proxy_set_header X-Real-Ip $remote_addr;
        proxy_set_header X-Forwarded-For $remote_addr;
        proxy_pass http://docloud_core_servers/dataeye/;
    }

    ...
}


9.启用https

启用 https 需要域名和证书。在 nginx 配置文件中,配置好证书信息,https 默认监听443端口。

server {
    listen 443  ssl;
    listen [::]:443  ssl;

    server_name www.ming.com;

    ssl_certificate /etc/nginx/ssl/1_www.ming.com_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/2_www.ming.com.key;

    # ssl验证相关配置
    #缓存有效期
    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;   

    ...
}

10.启用 https 2.0

http2.0 可以加速请求速度,加快站点加载。现在主流浏览器基本都支持。对于不支持的浏览器也会降级到http1.1版本进行访问。

http2.0 需要在 https 的基础上进行启用。

server {
    listen 443 http2 ssl;
    listen [::]:443 http2 ssl;

    server_name www.ming.com;

    ssl_certificate /etc/nginx/ssl/1_www.ming.com_bundle.crt;
    ssl_certificate_key /etc/nginx/ssl/2_www.ming.com.key;

    # ssl验证相关配置
    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;   #使用服务器端的首选算法

    ...
}

启用http2.0后,可以通过火狐浏览器验证

验证http2.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值