文章目录

  • 一、卸载原装Nginx
  • 二、通过 OneinStack 安装 Nginx
  • 三、创建 vhost
  • 四、按照提示选择或输入相关信息

文章PDF下载

配不好Nginx,誓不罢休

本教程适用于

  • 不会配置Nginx
  • 懒得倒腾的小白站长
  • 多个网站需要配置Nginx

本文并没有强调如何配置多个网站,但是,配置多个网站、域名同样可以使用本教程,本人亲测有效,请放心食用。
在配置多个网站时,可以忽略已经配置过的网站,直接启动vhost脚本配置新的域名即可,需要注意的是,单机配置多个网站一定要注意端口不能重复使用。


一、卸载原装Nginx

很多Nginx用户都是自己配置不成功才转而投奔OneinStack的,所以服务器上可能装有Nginx,为了避免不必要的麻烦,建议卸载原装Nginx:

 sudo apt-get remove nginx nginx-common # 卸载删除除了配置文件以外的所有文件。sudo apt-get purge nginx nginx-common # 卸载所有东东,包括删除配置文件。sudo apt-get autoremove # 在上面命令结束后执行,主要是卸载删除Nginx的不再被使用的依赖包。

二、通过 OneinStack 安装 Nginx

点击下方链接进入 OneinStack 官网,仅选择 安装 Nginx,其他的都可以取消选择。

https://oneinstack.com/auto

最后点击 复制安装命令 到服务器执行即可。如果你仅安装 Nginx,你的链接应该是这样:

wget -c http://mirrors.linuxeye.com/oneinstack-full.tar.gz && tar xzf oneinstack-full.tar.gz && ./oneinstack/install.sh --nginx_option 1

这一步会经过编译安装,可能会导致安装时间很漫长,这主要取决于你服务器的性能。

提示: 如果命令执行不成功,可以分开执行每一条命令(最后安装命令需要管理员权限sudo

出现下面的信息即代表安装成功:

Nginx installed successfully!
Created symlink from /etc/systemd/system/multi-user.target.wants/nginx.service to /usr/lib/systemd/system/nginx.service.
Redirecting to /bin/systemctl start nginx.service
####################Congratulations########################
Total OneinStack Install Time: 5 minutesNginx install dir:              /usr/local/nginx

三、创建 vhost

即创建一个站点,你可以通过这样的方式在你的服务器创建无限个站点。接下来的目的就是创建一个站点,并反向代理到你的网站。这一步在此教程使用 ahoh.club 这个域名做演示,实际情况请修改此域名。

进入到 oneinstack 目录,执行 vhost 创建命令

cd oneinstack
sudo sh vhost.sh

如果出现以下异常:

vhost.sh: 23: pushd: not found
vhost.sh: 40: ./include/check_os.sh: [[: not found
vhost.sh: 40: ./include/check_os.sh: vhost.sh: 40: ./include/check_os.sh: ^RedHat$: not found
^Rocky$: not foundvhost.sh: 40: ./include/check_os.sh: ^openEuler$: not found

请使用命令:sudo ./vhost.sh

四、按照提示选择或输入相关信息

  1. 证书配置方式
What Are You Doing?1. Use HTTP Only2. Use your own SSL Certificate and Key3. Use Let's Encrypt to Create SSL Certificate and Keyq. Exit
Please input the correct option:

这一步是选择证书配置方式,如果你有自己的证书,输入 2 即可。如果需要使用 Let’s Encrypt 申请证书,选择 3 即可。(本例中,我们需要使用https访问网站,所以选2)

  1. 配置域名
Please input domain(example: www.example.com):

输入自己的域名即可,前提是已经提前解析好了域名。(本例中,输入www.ahoh.club)

  1. 域名根目录
Please input the directory for the domain:www.ahoh.club :
(Default directory: /data/wwwroot/www.ahoh.club):

提示输入站点根目录,因为我们是使用 Nginx 的反向代理,所以这个目录是没有必要配置的,我们直接使用默认的即可(直接回车)。

  1. 是否添加其他域名
Do you want to add more domain name? [y/n]: y

是否需要添加其他域名,按照需要选择即可,如果不需要,输入 n 即可,这里我们选择y

强调:正常情况下,我们不仅仅希望使用地址 www.ahoh.club 访问网站,同时还希望使用 ahoh.club 也可以访问我们的网站,所以这里需要选择 y,把 ahoh.club 也要加进去。

ahoh.club属于根域名,www.ahoh.club属于子域名,如果你有类似于forum.ahoh.club,这里同样需要选择y,从而把所有希望跳转网站的域名都加进去。

  1. 添加新域名
Type domainname or IP(example: example.com other.example.com): ahoh.club

这里我们就把 ahoh.club 输进去。

  1. 域名跳转
Do you want to redirect from ahoh.club to www.ahoh.club? [y/n]: y

这里是决定 是否需要将 ahoh.club 自动跳转到 www.ahoh.club ,本例中选择y

提示: 原则上,这里跳不跳转都是可以的,但是在安装 NodeBB 期间,遇到了一个奇怪的BUG,当使用 ahoh.club 访问贴子的时候,外网连接图片就显示不出来,而使用 www.ahoh.club 访问就可以。所以本例选择了跳转。

  1. HTTP跳转HTTPS
Do you want to redirect all HTTP requests to HTTPS? [y/n]: y

这里决定是否将HTTP 访问跳转到HTTPS,这里跳不跳都行,但是既然都选择了SSL,跳转当然更 Fashion,推荐选择 y

  1. 位置信息询问
    不想填可以直接回车,建议好好填写。
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.Country Name (2 letter code) [CN]: State or Province Name (full name) [Shanghai]: BeijingLocality Name (eg, city) [Shanghai]: HaidianOrganization Name (eg, company) [Example Inc.]: AhohOrganizational Unit Name (eg, section) [IT Dept.]: 
  1. 防盗链
Do you want to add hotlink protection? [y/n]: n

是否需要做防盗链处理,按照需要选择即可,本例我们选择 n。(如果是自己搭的小网站,不建议选择,可能导致图片不显示,确有需要可以选择,如有问题可以再解决。)

  1. 路径重写
Allow Rewrite rule? [y/n]: n

路径重写配置,我们不需要,选择 n 回车确定即可。

  1. 请求日志
Allow Nginx/Tengine/OpenResty access_log? [y/n]: y

Nginx 的请求日志,建议选择 y

这样就完成了 vhost 站点的创建,最终会输出站点的相关信息:

#######################################################################
#       OneinStack for CentOS/RedHat 7+ Debian 8+ and Ubuntu 16+      #
#       For more information please visit https://oneinstack.com      #
#######################################################################
Your domain:                  www.ahoh.club
Virtualhost conf:             /usr/local/nginx/conf/vhost/www.ahoh.club.conf
Directory of:                 /data/wwwroot/www.ahoh.club
Self-signed SSL Certificate:  /usr/local/nginx/conf/ssl/www.ahoh.club.crt
SSL Private Key:              /usr/local/nginx/conf/ssl/www.ahoh.club.key
SSL CSR File:                 /usr/local/nginx/conf/ssl/www.ahoh.club.csr# Nginx 的配置文件即 /usr/local/nginx/conf/vhost/www.ahoh.club.conf。

别忘了把SSL证书中的文件复制到上面的指定位置!
SSL证书压缩包中通常有四个文件,只需要复制其中的三个就行了
在复制的时候以后缀名为区分
复制示例如下:
sudo cp ~/ssl/ahoh.club_bundle.crt /usr/local/nginx/conf/ssl/ahoh.club.crt

五、 修改 Nginx 配置文件
上方创建 vhost 的过程并没有创建反向代理的配置,所以需要我们自己修改一下配置文件。

使用你熟悉的工具打开配置文件,此教程使用 vim

sudo vim /usr/local/nginx/conf/vhost/www.ahoh.club.conf
  1. 删除一些不必要的配置
location ~ [^/]\.php(/|$) {#fastcgi_pass remote_php_ip:9000;fastcgi_pass unix:/dev/shm/php-cgi.sock;fastcgi_index index.php;include fastcgi.conf;
}

此段配置是针对 php 应用的,删不删都可以,但是本着极致的极客精神,本例中决定删掉。

  1. 添加 upstream 配置
    server 的同级节点添加如下配置:
upstream ahoh {server 127.0.0.1:8090;
}

提示,127.0.0.1指的是服务器的本机地址不需要改,后面的8090端口号需要改成自己的。
upstream 后面的名字 ahoh 可以自己决定,然后记下来,后面的对应节点改成一致就行。

  1. 在 server 节点添加/配置
location / {proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ahoh;
}

提示: proxy_pass http://ahoh; 中的网址,指向的就是上面一步 upstream 后面的名字,如果修改了那个名字,这里要对应修改。

  1. 修改 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ 节点
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {proxy_pass http://ahoh; # 和上面一样修改expires 30d;access_log off;
}
  1. 修改 location ~ .*\.(js|css)?$ 节点
location ~ .*\.(js|css)?$ {proxy_pass http://ahoh; # 和上面一样修改expires 7d;access_log off;
}

如果不按照第4、5 以上两步操作,请求一些图片或者样式文件不会经过 ahoh,也就是你的网站,所以请不要忽略此配置。

  1. 添加 acme.sh 续签验证路由
    OneinStack 使用的 acme.sh 管理证书,如果你在创建 vhost 的时候选择了使用 Let's Encrypt 申请证书,那么 OneinStack 会在系统内添加一个定时任务去自动续签证书,acme.sh 默认验证站点所有权的方式为在站点根目录生成一个文件(.well-known)来做验证,由于配置了反向代理,所以在验证的时候是无法直接访问到站点目录下的 .well-known 文件夹下的验证文件的。需要添加如下配置:
location ^~ /.well-known/acme-challenge/ {default_type "text/plain";allow all;root /data/wwwroot/www.ahoh.club/;
}

提示:如果第一步中,你没有选择3,就不用操作这一步。

至此,配置修改完毕,保存即可。最终你的配置文件可能如下面配置一样:

upstream ahoh{server 127.0.0.1:8090;
}
server {listen 80;listen [::]:80;listen 443 ssl http2;listen [::]:443 ssl http2;ssl_certificate /usr/local/nginx/conf/ssl/www.ahoh.club.crt;ssl_certificate_key /usr/local/nginx/conf/ssl/www.ahoh.club.key;ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;ssl_prefer_server_ciphers on;ssl_session_timeout 10m;ssl_session_cache builtin:1000 shared:SSL:10m;ssl_buffer_size 1400;add_header Strict-Transport-Security max-age=15768000;ssl_stapling on;ssl_stapling_verify on;server_name www.ahoh.club ahoh.club;access_log /data/wwwlogs/www.ahoh.club_nginx.log combined;index index.html index.htm index.php;root /data/wwwroot/www.ahoh.club;if ($ssl_protocol = "") { return 301 https://$host$request_uri; }if ($host != www.ahoh.club) {  return 301 $scheme://www.ahoh.club$request_uri;  }include /usr/local/nginx/conf/rewrite/none.conf;#error_page 404 /404.html;#error_page 502 /502.html;location / {proxy_set_header HOST $host;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Real-IP $remote_addr;proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;proxy_pass http://ahoh;}location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|mp4|ico)$ {expires 30d;proxy_pass http://ahoh;access_log off;}location ~ .*\.(js|css)?$ {expires 7d;proxy_pass http://ahoh;access_log off;}location ~ /(\.user\.ini|\.ht|\.git|\.svn|\.project|LICENSE|README\.md) {deny all;}location /.well-known {allow all;}
}

六、 重载 Nginx 使配置生效

  1. 验证 nginx 配置

Nginx默认安装在 /usr/local/nginx,由于本文未配置环境变量,需要进入可执行文件目录下操作。

cd /usr/local/nginx/sbin
sudo ./nginx -t

如果输出如下提示则代表配置有效:

nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successful
  1. 重载 Nginx 配置:
sudo nginx -s reload

至此,整个教程完毕,现在你可以访问域名检查是否已经配置成功。


如果访问网址不成功,可以查看nginx的错误日志:

cat /usr/local/nginx/logs/error.log

有任何问题,都可以留言交流。

文章PDF下载

Nginx反向代理、使用OneinStack配置Nginx、多网站配置、多域名配置相关推荐

  1. nginx反向代理非80端口/nginx反代非80端口

    首先声明,非专业研究nginx的,可以直接复制我的代码到 nginx 配置中再根据个人需求更改 非80端口通过80端口反向代理到非80端口应用,添加下面代码到nginx配置文件最后 server_na ...

  2. nginx 反向代理到另一个nginx

    一.背景 近期部署项目时遇到一个问题,由阿里云解析到一个公网iP,由该公网ip的nginx进行转发.但转发时,该项目为前后端分离,需要解析到远程服务器的xxx目录,这通过一个nginx转发不好解决.通 ...

  3. 相同Ip 不同端口配置Nginx反向代理Apache

    相同Ip  不同端口 配置Nginx反向代理Apache(就是Nginx跳转到Apache) 在linux 一经搭建好环境  先后安装了Nginx  和Apache 由于 默认端口都是:80 一般客户 ...

  4. Tomcat系列之服务器的基本配置及Nginx反向代理tomcat服务

    大纲 一.Tomcat 基本配置 1.为Tomcat提供SysV脚本 2.catalina 脚本讲解 3.telnet 登录管理Tomcat 4.配置Tomcat虚拟主机 5.Tomcat图形管理接口 ...

  5. 配置nginx反向代理时,要注意的权限设置

    MYPM演示环境(www.mypm.cc/mypm)中当下载大的附件,或是页面中有大图片时,就会下载中断或是图版无法显示 也许你要说我用的nginx缺省的设置没碰到这问题,那是因为你的网站没大文件 查 ...

  6. 使用Nginx反向代理tomcat服务器

    使用Nginx反向代理tomcat服务器 2015-04-23 11:19 244人阅读 评论(0) 收藏 举报  分类: Tomcat(5)   LNMP/LAMP开发平台研究(10)  版权声明: ...

  7. [python] tornado supervisor监控 以及 Nginx反向代理

    文章目录 Supervisor 简单的tornado supervisor 配置 启动 效果 Nginx反向代理 安装pcre和nginx nginx配置文件 Supervisor Superviso ...

  8. Nginx反向代理——简单体验Nginx反向代理功能

    一.引言 从Nginx入门学习开始.到现在所讲的Nginx反向代理.我们的Nginx学习已经进入白热化状态,前面所学只是铺垫,真正在公司的业务场景中Nginx绝大数用来反向代理+负载均衡所用.相信大家 ...

  9. nginx反向代理(请求转发-URL匹配规则)

    反向代理适用于很多场合,负载均衡是最普遍的用法. nginx 作为目前最流行的web服务器之一,可以很方便地实现反向代理. nginx 反向代理官方文档: NGINX REVERSE PROXY 当在 ...

  10. 微服务架构(5):nginx反向代理cors解决跨域

    微服务架构(5):nginx反向代理&&cors解决跨域 学习目标 1.使用域名访问本地项目 1.1.统一环境 1.2.域名解析 1.3.解决域名解析问题 1.4.nginx解决端口问 ...

最新文章

  1. 一文帮你梳理清楚:奇异值分解和矩阵分解 | 技术头条
  2. 今晚开播 | 人脸识别的最新进展以及工业级大规模人脸识别实践探讨
  3. Netty 源码(ChannelHandler 死磕)
  4. HashMap+双向链表实现LRU
  5. jQuery学习--选择器的使用
  6. 提升服务器性能的建议
  7. LeetCode206 | Reverse Linked List (Easy)
  8. 有没有词匹配算法_整站关键词SEO的匹配优化方法
  9. UI线框图模板素材实际应用好帮手
  10. Mysql学习总结(82)——MySQL逻辑删除与数据库唯一性约束如何解决?
  11. 旅游是开车自驾好还是坐火车好?能否从各个方面解答一下?
  12. SpingMVC 注解@RequestMapping、@SuppressWarnings、@Scheduled 定时器
  13. c语言mud文字武侠游戏,文字武侠mud游戏,纯文字武侠mud游戏手机版预约 v1.0-手游汇...
  14. TeXLive升级教程
  15. 腾讯面试算法题——编码
  16. mysql中 创建函数失败_Mysql创建函数出错
  17. module java.base does not “opens java.lang“ to module spring.core
  18. 前端自学路线(一定要记笔记)
  19. C++包扩展_Netgear 网件 EAX80 AX6000规格 无线扩展器 开箱拆解评测
  20. scrapy抓斗鱼主播的图片

热门文章

  1. 将安卓项目部署云服务器,将app项目部署到云服务器上
  2. 广州粤语和Hong Kong粤语区别整理
  3. Power BI数据建模分析
  4. 阿里图标库使用font class 写法和unicode引用,简单,使用快捷
  5. 读书笔记:《了不起的盖茨比》
  6. 单细胞注释之坑-通过AddModuleScore注释细胞
  7. Google Earth Engine ——
  8. 区别:强化学习集成学习增强学习规则学习
  9. sikuli入门到进阶
  10. 如何更改R默认工作目录:永久或临时