iis服务器助手广告广告
返回顶部
首页 > 资讯 > 服务器 >OPENWRT 使用nginx作为web服务器
  • 404
分享到

OPENWRT 使用nginx作为web服务器

nginxhttps智能路由器 2023-09-07 13:09:28 404人浏览 安东尼
摘要

OPENWRT 使用Nginx作为WEB服务器 在op上大家使用nginx作为web服务器,主要是为了其强大的反向代理功能,但op上的nginx官方做了一定的修改,配置上稍显复杂,几篇文章也是比较老的

OPENWRT 使用Nginx作为WEB服务器

在op上大家使用nginx作为web服务器,主要是为了其强大的反向代理功能,但op上的nginx官方做了一定的修改,配置上稍显复杂,几篇文章也是比较老的,配置也是一头雾水,作业都不好抄,索性自己查了资料学了些nginx的内容,实现了如下的功能:

aid-svg-1yeXohCliMcqMGxv .activation0{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1yeXohCliMcqMGxv .activation1{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1yeXohCliMcqMGxv .activation2{fill:#f4f4f4;stroke:#666;}#mermaid-svg-1yeXohCliMcqMGxv .actorPopupMenu{position:absolute;}#mermaid-svg-1yeXohCliMcqMGxv .actorPopupMenuPanel{position:absolute;fill:#ECECFF;box-shadow:0px 8px 16px 0px rgba(0,0,0,0.2);filter:drop-shadow(3px 5px 2px rgb(0 0 0 / 0.4));}#mermaid-svg-1yeXohCliMcqMGxv .actor-man line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;}#mermaid-svg-1yeXohCliMcqMGxv .actor-man circle,#mermaid-svg-1yeXohCliMcqMGxv line{stroke:hsl(259.6261682243, 59.7765363128%, 87.9019607843%);fill:#ECECFF;stroke-width:2px;}#mermaid-svg-1yeXohCliMcqMGxv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 外网 OP 内网 通过https+域名访问开放的端口 拒绝未开放的端口和Http请求 内网ip地址直接访问OP 放行内网的访问请求 外网 OP 内网

####默认你已经完成 域名申请,配置DDNS 和 申请ssl证书的操作。

修改UCI控件

OP把uci配置加于nginx的配置之上,所以第一步先关闭uci的配置管理。
其实第三篇参考文章(官方文档)已经讲的很清楚了,如果你需要简单的管理nginx,用uci就够了,需要自己配置nginx的就关闭uci管理。
那当然是关闭啦:
第一种优雅的方式,登录后台命令行输入:

uci set nginx.global.uci_enable=false
uci commit nginx

这两步关闭了uci的配置接管
第二种直接的方式,修改/etc/config/nginx:

config main 'global'#把这里的true修改为false就行了option uci_enable 'false'config server '_lan'option server_name '_lan'list include 'restrict_locally'list include 'conf.d/*.locations'option uci_manage_ssl 'self-signed'option ssl_certificate '/etc/nginx/conf.d/_lan.crt'option ssl_certificate_key '/etc/nginx/conf.d/_lan.key'option ssl_session_cache 'shared:SSL:32k'option ssl_session_timeout '64m'option access_log 'off; # logd openwrt'config server '_redirect2ssl'list listen '80'list listen '[::]:80'option server_name '_redirect2ssl'option return '302 https://$host$request_uri'

修改之后,重启后nginx也不再受到uci的管理了,其实到这里剩下的配置就和常规nginx一样了。

解除内网访问http重定向到https的问题

修改/etc/nginx/nginx.conf这个配置文件:
那我这里就贴出具体修改的代码块

server { #see uci show 'nginx._lan'listen 443 ssl default_server;listen [::]:443 ssl default_server;server_name _lan;include restrict_locally;include conf.d/*.locations;ssl_certificate /etc/nginx/conf.d/_lan.crt;ssl_certificate_key /etc/nginx/conf.d/_lan.key;ssl_session_cache shared:SSL:32k;ssl_session_timeout 64m;access_log off; # logd openwrt;}server { #see uci show 'nginx._redirect2ssl'listen 80;listen [::]:80;server_name _redirect2ssl;return 302 https://$host$request_uri;}

修改为:

   server { #see uci show 'nginx._lan'   listen 80;   listen [::]:80;   server_name _lan;   include restrict_locally;   include conf.d/*.locations;   access_log off; # logd openwrt;   }

这里解释一下,好多文章是留下了 _redirect2ssl这个虚拟服务器配置,这里保留哪个虚拟服务器并不影响使用,只是/etc/nginx/目录下有个lan的配置,凭感觉来的。

这个就是本地web端,即OP的管理页面:

   include conf.d/*.locations;

这个是局域网保留网段的过滤,使得只能内网ip才能访问op的管理页面:

   include restrict_locally;

加上国内三大运营商默认ban了80端口443端口等一系列常见端口,其实某种意义上讲非常安全

修改好配置后,命令行输入:

nginx -t

检查一下配置是否存在低级的语法错误。
在输入重载重启nginx命令:

service nginx reload
service nginx restart

至此内网通过ip访问就不会再强制https访问了

添加SSL证书

网上教你怎么申请ssl证书的非常多,现在好多是通过acme.sh脚本自动申请,另外就是通过域名提供商申请免费的ssl证书,
这里就不再赘述了,自行搜索。
nginx添加ssl证书就是声明一下ssl_certificate和ssl_certificate_key两个值就行了,这里提供一种全局添加的方式。
修改/etc/nginx/nginx.conf这个配置文件:

   gzip_proxied any;      root /www;      #####将以下内容添加到配置文件中#####      # Mozilla Intermediate configuration   ssl_protocols          TLSv1.2 TLSv1.3;   #以下协议需要确认硬件是否支持,如果不支持或者不确定可以直接去除   ssl_ciphers            ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384;      #以下修改为自己申请的域名公钥和私钥文件地址   ssl_certificate /etc/nginx/conf.d/example.com.crt;   ssl_certificate_key /etc/nginx/conf.d/example.com.key;   #以上修改为自己申请的域名公钥和私钥文件地址   ssl_session_cache shared:SSL:32k;   ssl_session_timeout 64m;      #####将以上内容添加到配置文件中#####      server { #see uci show 'nginx._lan'

添加好后重载并重启nginx服务。
修改好后就有个全局的ssl证书声明,如果你有多个域名需要反向代理,那就需要为每个不同域名对应的服务器配置对应的ssl证书了。

添加反向代理

一般来说,需要外网的服务,直接做一个端口转发到内网指定ip的指定端口就行了:

外网 OP 内网服务 通过域名加端口访问 转发外网的访问请求 外网 OP 内网服务

但是使用nginx反向代理的话,外网数据首先要转发到op端的指定端口再由op上的nginx转发给局域网ip

外网 OP.NGINX 内网服务 通过域名加端口访问op的nginx服务器 nginx判断是否转发外网的访问请求 外网 OP.NGINX 内网服务

所以记得在op->防火墙->端口转发中将对应端口转发到op的本地端口:
在这里插入图片描述
我这里按照nginx的习惯做法,在/etc/nginx/conf.d目录下创建了一个example.com.conf的配置文件:

server {   #一般加ssl后缀就可以了,我这里添加了对http2协议的要求。   listen 9080 ssl http2;   listen [::]:9080 ssl http2;   #修改为自己申请的域名   server_name example.com;   location / {   #修改为自己需要代理的局域网ip和端口号   proxy_pass http://localserver:9080;   proxy_set_header Host $host;   #以下配置文件是参考配置网站生成的配置不添加也没问题   include nginxconfig.io/proxy.conf;   }   access_log on; # logd openwrt;   # location / { ... } # root location for this server.}

添加好后测试配置是否存在语法问题,重载并重启nginx服务,如果发现通过域名访问失败时,先不要慌。
1.在内网通过nginx所在服务器加配置的端口号访问一下,确认内网服务是否正常
2.确认域名动态解析是否生效正确
3.以上都不是,那可能你开放的端口被运营商ban了,换个端口吧

这里贴出/etc/nginx/nginxconfig.io/proxy.conf的配置内容

proxy_http_version                 1.1;proxy_cache_bypass                 $http_upgrade;# Proxy SSLproxy_ssl_server_name              on;# Proxy headersproxy_set_header Upgrade           $http_upgrade;proxy_set_header X-Real-IP         $remote_addr;proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;proxy_set_header X-Forwarded-Proto $scheme;proxy_set_header X-Forwarded-Host  $host;proxy_set_header X-Forwarded-Port  $server_port;# Proxy timeoutsproxy_connect_timeout              60s;proxy_send_timeout                 60s;proxy_read_timeout                 60s;

这些改动都是参考NGINX配置生成网站的demo修改的,自行斟酌添加:NGINX 配置配置高性能、安全、稳定的NGINX服务器的最简单方法.

添加外网访问http自动转为https

到这里其实已经可以正常访问了,但是如果你用http去访问一个强制https访问的端口就会出现nginx的400报错,意思你该用https访问。
这里你自然可以参考内网http强制转https的写法,但我记得我测试有点问题,我这里贴出一个最近找到的对于域名访问全部重定向为https的方法,当然你也可以修改端口为指定端口:

server {              listen example.com;                 server_name example.com;            rewrite ^/(.*)$ https://$host$1 permanent;                         }

主要参考文章

K3终极折腾记<三> --通过ipv6域名远程访问openwrt、https证书安装配置.
OpenWrt 上设置 nginx HTTP 不重定向到 HTTPS 以正常使用 OpenClash yacd 面板.
Nginx webserver.

来源地址:https://blog.csdn.net/m0_46645810/article/details/129034751

--结束END--

本文标题: OPENWRT 使用nginx作为web服务器

本文链接: https://www.lsjlt.com/news/398269.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • OPENWRT 使用nginx作为web服务器
    OPENWRT 使用nginx作为web服务器 在op上大家使用nginx作为web服务器,主要是为了其强大的反向代理功能,但op上的nginx官方做了一定的修改,配置上稍显复杂,几篇文章也是比较老的...
    99+
    2023-09-07
    nginx https 智能路由器
  • 使用Nginx作为反向代理服务器
    简介 在本教学文章中,我们将学习如何使用Nginx作为反向代理服务器,将流量转发到后端服务器。反向代理是一种常见的应用场景,它可以帮助我们提高应用程序的可靠性、性能和安全性。本教程将介绍如何配置Ngi...
    99+
    2023-09-18
    nginx 运维
  • Nginx的Web服务器caddy怎么使用
    这篇文章主要介绍“Nginx的Web服务器caddy怎么使用”,在日常操作中,相信很多人在Nginx的Web服务器caddy怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Nginx的Web服务器cad...
    99+
    2023-07-02
  • LNMP架构 LNMP 就是 Linux+Nginx+MySQL+PHP , Linux 作为服务器的操作系统, Nginx 作为 Web 服务器PHP作为解析动态脚本语言 MySQL 即为数据库
    LNMP架构 ​ 1.LNMP架构概述 ​ 2.安装LNMP架构 ​ 3.检测LNMP架构 ​ 4.部署博客产品 Wordpress ​ 5.部署知乎产品 Wecenter ​ 6.部署网校产品Edu...
    99+
    2023-10-27
    1024程序员节 服务器 运维 云计算 架构
  • 【面试大全-Nginx】-Nginx Web服务器
    简述一下什么是Nginx Nginx是一个web服务器和方向代理服务器,用于HTTP、HTTPS、SMTP、POP3和IMAP协议。因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名 也就是说Nginx本身就可以托管网站(类...
    99+
    2023-08-19
    服务器 nginx 面试
  • 怎么用Nginx配置web服务器
    这篇“怎么用Nginx配置web服务器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用...
    99+
    2024-04-02
  • Nginx怎么作为邮件代理服务器应用
    Nginx本身并不直接支持作为邮件代理服务器应用。Nginx是一款高性能的Web服务器和反向代理服务器,主要用于处理HTTP和HTT...
    99+
    2024-05-06
    Nginx 服务器
  • 怎么将Nginx配置为ThinkPHP的Web应用程序服务器
    这篇“怎么将Nginx配置为ThinkPHP的Web应用程序服务器”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么将Ngi...
    99+
    2023-07-05
  • Nginx作为邮件服务器怎么配置
    Nginx本身并不是一个邮件服务器,而是一个Web服务器和反向代理服务器。如果想要使用Nginx作为邮件服务器的话,需要结合其他的邮...
    99+
    2024-04-03
    Nginx 服务器
  • Ubuntu 16.04中怎么配置和使用NGINX Web服务器
    今天小编给大家分享一下Ubuntu 16.04中怎么配置和使用NGINX Web服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解...
    99+
    2023-06-27
  • Nginx如何配置Web服务器
    这篇文章主要介绍“Nginx如何配置Web服务器”,在日常操作中,相信很多人在Nginx如何配置Web服务器问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Nginx如何配置W...
    99+
    2024-04-02
  • 怎么为Node.js程序配置使用Nginx服务器
    今天小编给大家分享一下怎么为Node.js程序配置使用Nginx服务器的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。node...
    99+
    2023-06-17
  • 怎么使用docker安装nginx提供的web服务
    这篇文章主要介绍了怎么使用docker安装nginx提供的web服务的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇怎么使用docker安装nginx提供的web服务文章都会有所收获,下面我们一起来看看吧。一、拉...
    99+
    2023-06-29
  • Nginx Web服务器如何进行spawn
    Nginx Web服务器通过使用多个进程来进行spawn。在Nginx的配置文件中,可以定义一个或多个“worker_process...
    99+
    2023-09-12
    Nginx
  • 超越Nginx的Web服务器caddy优雅用法
    目录前言Caddy简介Caddy具有如下主要特性:安装使用基本使用Caddyfile基本语法反向代理静态代理动态代理文件压缩地址重写按目录划分HTTPSDocker支持总结前言 N...
    99+
    2024-04-02
  • 聊聊使用docker安装nginx提供web服务的问题
    目录一、拉取镜像二、运行镜像启动容器三、文件映射四、再次启动容器服务 一、拉取镜像 docker pull命令用于拉取应用镜像,docker pull nginx命令用于拉取最新版本...
    99+
    2024-04-02
  • SQL Server2017使用IP作为服务器名连接服务器
    因为要用java连接数据库,但是java要用IP当服务器名,然后用sa用户名,和密码登录数据库(就是数据库在ip这台主机上,我要指明要登陆它,登录它的时候又需要有用户名和密码)。 ...
    99+
    2024-04-02
  • 阿里云国际版使用Nginx作为HTTPS转发代理服务器的处理方法
    目录HTTP/HTTPS 转发代理的分类转发代理处理 HTTPS 流量时需要特殊处理NGINX解决方案HTTP 连接隧道 (L7 解决方案)历史背景ngx_http_proxy_co...
    99+
    2024-04-02
  • 华为云服务器作用
    华为云服务器是华为公司专为企业客户打造的云计算服务,旨在为企业提供高效、稳定和安全的云计算解决方案。在华为云服务器的作用中,包括以下几个方面: 高可用性:企业客户可以将其数据和应用程序托管在华为云服务器上,以确保其数据和应用程序保持在最...
    99+
    2023-10-26
    华为 作用 服务器
  • Web接口安全性:为什么选择Linux服务器作为保障
    选择Linux服务器作为Web接口的保障有以下几个原因:1. 开放源代码:Linux操作系统是开放源代码的,这意味着任何人都可以审查...
    99+
    2023-10-10
    Linux
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作