点赞
评论
收藏
分享
举报
Nginx常用命令与配置
发表于2020-09-01 09:50

浏览 1.7k

一、nginx安装

1、本地安装

  • windows系统
直接去官网:https://nginx.org/en/download... 下载相应版本即可。
  • mac系统
$ brew install nginx

2、Linux安装:

以centOS系统为例,有下面两种安装方式(推荐1)

1.) 通过rpm镜像源安装

$ rpm -ivh http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm
$ yum install -y nginx

2.) 通过依赖包详细安装

安装nginx依赖库pcre、zlib
$ yum install pcre pcre-devel  
$ yum install zlib zlib-devel
如有必要,可以安装c++编译环境和openssl
$ yum install gcc-c++
$ yum install openssl openssl-devel
下载/编译nginx
$ wget -c https://nginx.org/download/nginx-1.16.0.tar.gz
$ tar -zxvf nginx-1.16.0.tar.gz

# 编译安装
$ cd nginx-1.16.0
$ ./configure  # 默认安装在/usr/local/nginx 
$ make && make install

# 创建软链
$ ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/nginx
$ nginx -v

二、nginx命令

# windows启动
> start nginx

# linux/mac启动
$ service nginx start

# 手动指定配置
$ nginx -c /usr/local/nginx/conf/nginx.conf

# -p指定nginx运行目录(日志存储位置)
$ nginx -c /path/nginx.conf -p /path/

# 重启
$ nginx -s reload

# 关闭
$ nginx -s stop

# 查看端口
$ netstat -an | grep 端口  # linux/mac系统
> netstat -an | findstr 端口  # windows系统

# 测试web服务
$ curl -i 主机:端口
# 或
$ telnet 主机 端口

# 查看进程
$ ps -ef | grep nginx

# 查看错误日志
$ tail -30 /var/log/nginx/error.log

三、nginx配置

查看nginx.conf配置文件位置
$ nginx -t

1、创建一个标准的server

确保nginx.conf里的 include conf.d/*.conf 已启用,没有则添加一条
在conf.d目录下新建server.conf文件,配置如下:
server {
    listen       80;
    server_name  127.0.0.1;

    client_max_body_size    100m;
    
    location / {
        root   /app/xxx;  # 项目所在目录
        index  index.html index.htm;
        try_files  $uri $uri/ /index.html;  # vue单页应用需要路由始终指向index.html
    }
}

2、配置ssl证书实现https访问

复制.pem和.key两种证书到当前server配置同一个目录下
server {
    listen       443;
    server_name  127.0.0.1;
    ssl on;
    ssl_certificate             my.pem;    # 替换成自己的证书
    ssl_certificate_key         my.key;    # 替换成自己的证书
    ssl_session_timeout         5m;
    ssl_protocols SSLv3 TLSv1.2;
    ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!AESGCM;
    ssl_prefer_server_ciphers   on;

    location / {}
}

3、api接口反向代理

    location /api {
        proxy_pass   http://b.domain.com:9000;  # 最终地址会加上/api,变成 /api/xxx
        #proxy_cookie_domain   b.domain.com a.domain.com; # 需要修改接口返回的cookie域名时使用
    }
需要注意的是,proxy_pass路径有相对和绝对之分,如:proxy_pass http://b.domain.com:9000/; # 最终地址会替掉/api,变成 /xxx

4、upstream负载均衡

upstream apiServer { 
    server 10.0.0.80:5000;  # 如果需要权重加 weight=数字
    server 10.0.0.81:5000;
}
server {
    listen       80;
    server_name  127.0.0.1;

    location /api {
        proxy_pass   http://apiServer;
    }
}

需要注意的是:

upstream名称不应包含下划线,因为在某些条件下,当成主机名传给后端Java应用,会被当做域名来解析,结果返回Null,容易触发服务器内部错误。建议:使用驼峰命名规范

5、允许它站跨域访问

在location /api {}里添加以下项:

add_header Access-Control-Allow-Origin *;  # *表示允许所有站跨域访问(不安全,建议指定具体允许的域名如:http://b.domain.com:9000(注意格式:http(s):// + domain + port,末尾也不能加/)
add_header Access-Control-Allow-Credentials true;  #此项为允许带cookie跨域访问,若设置true,上面域名配置不能为*,必须指定具体域名

6、iframe同源策略限制

可以通过nginx配置,限制它站通过iframe嵌入访问本站,不加配置默认是允许访问
# 限制为同源可用
add_header X-Frame-Options SAMEORIGIN

# 指定网站可用
add_header X-Frame-Options "ALLOW-FROM http://xxx.com:8000";
add_header Content-Security-Policy "frame-ancestors http://xxx.com:8000"; # 兼容chrome

7、开启gzip压缩

gzip字段设置on,并设置哪些类型文件需要压缩:

http {
    include          mime.conf;
    default_type     application/octet-stream;
    # ....

    gzip             on;
    gzip_min_length  10k;
    gzip_comp_level  5;
    gzip_types       text/plain text/css application/x-javascript application/javascript text/javascript;

    server {
        # ....
    }

8、其它问题

1.) 访问服务报403权限

需要修改nginx.conf里的user,比如user root;

2.) nginx重启时报pid错

nginx: [error] invalid PID number "" in "/usr/local/nginx/logs/nginx.pid"

解决方案:使用nginx -c的参数指定nginx.conf文件的位置

# 新建nginx.pid
$ mkdir -p /usr/local/nginx/logs
$ touch /usr/local/nginx/logs/nginx.pid

# 指定配置文件
$ nginx -c /usr/local/nginx/conf/nginx.conf
已修改于2023-03-09 02:06
创作不易,留下一份鼓励
守望

暂无个人介绍

关注



写下您的评论
发表评论
全部评论(0)

按点赞数排序

按时间排序

关于作者
守望
这家伙很懒还未留下介绍~
89
文章
0
问答
17
粉丝
相关文章
介绍nginx网页配置工具QQ技术交流群1:1106758598QQ技术交流群2:560797506邮箱: cym1102@qq.com官网地址: http://www.nginxwebui.cn码云: https://gitee.com/cym1102/nginxWebUIgithub: https://github.com/cym1102/nginxWebUI功能特点nginxWebUI也可管理多个nginx服务器集群,随时一键切换到对应服务器上进行nginx配置,也可以一键将某台服务器配置同步到其他服务器,方便集群管理.部署此项目后,配置nginx再也不用上网各种搜索配置代码,再也不用手动申请和配置ssl证书,只需要在本项目中进行增删改查就可方便的配置和启动nginx。技术说明本项目是基于springBoot的web系统,数据库使用sqlite,因此服务器上不需要安装任何数据库项目启动时会释放一个.sqlite.db到系统用户文件夹中,注意进行备份本系统通过Let'sencrypt申请证书,使用acme.sh脚本
点赞 6
浏览 6.4k
  前三周学习了陶辉老师的“NGINX基础培训系列课程”,感觉受益良多,在这里想把一些知识点记录一下,和大家分享一下知识点,也方便日后的随手查看,温故知新。  首先,我们了解到了Nginx的版本,Nginx发布版本分为主线版本和稳定版本,区分两个版本也非常简单,主线版本版本号为单数,比如1.19,稳定版本为双数,比如1.18,今天我要说的是稳定版本,这个版本会尽量少的减少Nginx的bug问题,适用于生产环境,这里我不建议使用Nginx和其他软件一样在生产环境中落后一个或多个大版本使用,之前生产环境做过漏扫,发现我们编译自带的Nginx版本为:nginx/1.13.3(查询命令为nginx-V),结果出现了多个漏洞,四个高危和一个中危漏洞:        通过升级Nginx到稳定版最新版本后修复!  其次,是Nginx发行版本的选择,目前比较流行的有:nginx、nginxplus、Tengine、openresty、ope
点赞 1
浏览 3.5k
感谢您参加“NGINX从入门到精通进阶系列培训”!以下为培训的问答、课件和录像,希望您能通过此培训学有所得,祝学习进步!>问与答:- 基础篇+高级篇 - 应用篇+实战篇(New)>课件(PPT):基础篇:-NGINX概要、安装、配置:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-Setup.pdf-NGINX日志、运维:https://interact.f5.com/rs/653-SMC-783/images/cnfeb22-nginxcorecourse-maintenance.pdf高级篇:-NGINX变量、API:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-API.pdf-NGINXSSL、NJS:https://interact.f5.com/rs/653-SMC-783/images/CNFEB22-NginxCoreCourse-SSL.pdf
点赞 10
浏览 4.9k