服务器经常使用的操作系统就是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后,可以通过火狐浏览器验证

nginx 使用总结相关推荐

  1. nginx配置http、https访问,nginx指定ssl证书,阿里云腾讯云华为云设置nginx https安全访问

    nginx配置http.https访问 要设置https访问需要从对应的云厂商申请证书,并下载Nginx证书到服务器. 我这里从阿里云申请了免费的域名证书,然后将证书放置在服务器的/etc/ssl/. ...

  2. Web项目使用nginx实现代理端口访问,看这篇就够了

    在搭建服务器的时候,项目部署在tomcat上,要访问项目,则需要加上端口号,如何隐藏端口号来访问呢,这就用到了nginx. nginx可以在docker上安装,也可以在linux上安装,这里我建议使用 ...

  3. nginx介绍及常用功能

    什么是nginx nginx跟Apache一样,是一个web服务器(网站服务器),通过HTTP协议提供各种网络服务. Apache:重量级的,不支持高并发的服务器.在Apache上运行数以万计的并发访 ...

  4. Nginx搭建负载均衡集群

    (1).实验环境 youxi1 192.168.5.101 负载均衡器 youxi2 192.168.5.102 主机1 youxi3 192.168.5.103 主机2 (2).Nginx负载均衡策 ...

  5. 快速通过nginx配置域名访问

    配置nginx进行域名访问文件 在nginx安装目录下的conf目录下新建一个配置文件,比如你新加的域名为admin.hello.com,你希望通过这个域名访问admin项目,那么新建一个admin. ...

  6. Docker学习(七)-----Docker安装nginx

    基本安装 1. 拉取Nginx镜像 docker pull nginx:latest 2. 查看本地镜像列表(即可看到nginx) docker images 3. 运行容器 docker run - ...

  7. 使用阿里云服务器安装docker,并用nginx示例

    一.前言 之前对docker了解不多,自从使用了一次之后,就感觉这个产品对开发者实在是太友好了,可以迅速在Linux,window等平台部署服务.常见的有数据库,nginx,消息队列,redis等.利 ...

  8. Centos7.4安装Nginx

    Centos7.4安装Nginx 使用yum命令 一.安装准备 首先由于nginx的一些模块依赖一些lib库,所以在安装nginx之前,必须先安装这些lib库,这些依赖库主要有g++.gcc.open ...

  9. nginx将泛解析的匹配域名绑定到子目录配置方法

    应用场景: http://zzl.lteam.cn/ 访问/usr/local/boke/lteam.cn/zzl 目录下的 index.html http://lj.lteam.cn/ 访问/usr ...

  10. ubuntu搭建nginx环境

    1.首先给服务器上配置好JDK环境,之前有说过,在这就不多说了.本人安装的是JDK1.6. 2. 准备好2个TOMCAT,上传到服务器上.修改tomcat端口,所有端口必须不一致.本次演示用tomca ...

最新文章

  1. C#中将结构类型数据存储到二进制文件中方法
  2. abaqus切削为什么没有切屑_基于ABAQUS的高速切削切屑形成过程的有限元模拟
  3. C# Label显示多行文本及换行(WinForm/WebForm)
  4. 什么是实验室人员比对人员_实验室工作人员怎么管?管理人员到底要不要懂技术?...
  5. 对OCR文字识别软件进行自动分析和识别设置的教程
  6. java中ArrayList与LinkedList的区别
  7. Struts项目中,检测用户名是否被占用/查询账户名称是否被占用/查询账户名称是否已被注册/检查用户名是否被注册
  8. 中科院C语言应聘机试编程题6,中科院计算所保研笔试+机试+面试经验分享
  9. com.alibaba.fastjson.JSONObject;的使用
  10. 01分数规划解析(转载)
  11. matlab 16qam误码率图,16QAM理论误码率与实际误码率MATLAB仿真程序(最新整理)
  12. JavaScript(6):回调函数
  13. I DEA出现Spring配置错误:class path resource [.xml] cannot be opened because it does not exist
  14. Java经典300例-基础篇-004:整数类型最大值
  15. 关于将LIUNX下的图形化操作倾向WINDOWS的几个东西
  16. C-Free5.0注册码
  17. python随机函数random、画、星轨_教你绘制梵高的星空
  18. 维基解密:攻击 Mac/Linux 的CIA三款工具
  19. Cocos Creator苹果应用商城上架指南
  20. 工控机和通用计算机相比的特点,工控机特点

热门文章

  1. linux命令中 root@ubuntu:/# 与 root@ubuntu:~# 区别
  2. 麦子学院IT资源,web前端,UI设计,Java全套,IOS,android,产品经理,pyhton,网络安全,运维
  3. windows桌面动态主题_学习Windows 7:桌面主题和背景
  4. 日常百度SEO优化技巧
  5. 5点滑动平均公式推导
  6. Module not specified
  7. 有1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有10只小白鼠和一星期的时间,如何检验出那个瓶子里有毒药?
  8. oracle 实现等额本息,【oracle存储过程】实现生成等额本息的还款计划
  9. oracle dbms_lob trim,ORACLE LOB处理
  10. 股份制的起源—严谨版与趣味版