|
|
<!doctype html>
|
|
|
<html lang="en">
|
|
|
<head>
|
|
|
<meta charset="utf-8">
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
|
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Quicksand:400,700">
|
|
|
<link rel="stylesheet" href="https://cdn.nginxconfig.io/assets/css/bootstrap.min.css?v=4.0.0">
|
|
|
<link rel="stylesheet" href="https://cdn.nginxconfig.io/assets/css/highlight-github.min.css?v=9.12.0">
|
|
|
<link rel="stylesheet" href="https://cdn.nginxconfig.io/assets/css/angular-tooltips.min.css?v=1.2.2">
|
|
|
<link rel="stylesheet" href="https://cdn.nginxconfig.io/assets/css/app.css">
|
|
|
<link rel="icon" type="image/png" href="https://cdn.nginxconfig.io/assets/img/favicon.png">
|
|
|
<title>nginxconfig.io</title>
|
|
|
<meta name="description" content="Online nginx configuration generator">
|
|
|
<meta name="keywords" content="nginx, config, configurator, /etc/nginx/nginx.conf, nginx performance, nginx tuning, nginx php, nginx, php fpm, wordpress, cdn, access_log, error_log, Laravel, Lumen, Symfony, Zend, CodeIgniter, Yii, CakePHP, Slim, Angular, React, Vue.js, Ember.js">
|
|
|
<meta property="og:title" content="nginxconfig.io">
|
|
|
<meta property="og:description" content="Online nginx configuration generator: HTTPS, HTTP2, CDN, PHP (Laravel, Symfony, CodeIgniter…), Frontend (Angular, React, Vue.js…), WordPress, security headers, rate limiting, expiration by file types…">
|
|
|
<meta property="og:type" content="website">
|
|
|
<meta property="og:url" content="https://nginxconfig.io">
|
|
|
<meta property="og:image" content="https://cdn.nginxconfig.io/assets/img/share.png">
|
|
|
</head>
|
|
|
<body ng-app="NginxConfigIoApp" ng-controller="NginxConfigIoController">
|
|
|
<header>
|
|
|
<div class="container">
|
|
|
<div class="logo">nginxconfig.io</div>
|
|
|
<div class="row">
|
|
|
<div class="col-sm-10 col-lg-8 col-xl-6 offset-sm-1 offset-lg-2 offset-xl-3">
|
|
|
<div class="input-group url" ng-class="{active: isDirty}">
|
|
|
<div class="input-group-prepend">
|
|
|
<div class="input-group-text" ngclipboard data-clipboard-target="#url" ngclipboard-success="clipboardSuccess('url')"><img src="https://cdn.nginxconfig.io/assets/img/clipboard.svg" alt="Copy to clipboard"></div>
|
|
|
</div>
|
|
|
<input type="text" id="url" class="form-control form-control-sm" ng-value="location.absUrl()" readonly>
|
|
|
<div class="input-group-append">
|
|
|
<div class="input-group-text" ng-click="reset()"><img src="https://cdn.nginxconfig.io/assets/img/refresh.svg" alt="Reset"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</header>
|
|
|
<main>
|
|
|
<div class="container-fluid">
|
|
|
<div class="row">
|
|
|
<div class="col-md-3 col-lg-2 options">
|
|
|
<div class="card">
|
|
|
<div class="card-body">
|
|
|
<div class="form-group">
|
|
|
<label class="form-label">Domain</label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.domain">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><span tooltips tooltip-template="path to project">Path</span></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.path">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><span tooltips tooltip-template="public path in project">Document root</span></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.document_root">
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="https" ng-model="data.https">
|
|
|
<label class="form-check-label" for="https">
|
|
|
<span tooltips tooltip-template="SSL config<br><br><i>using Let's Encrypt and Mozilla SSL config</i>">HTTPS</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check" ng-if="data.https">
|
|
|
<input class="form-check-input" type="checkbox" id="http2" ng-model="data.http2">
|
|
|
<label class="form-check-label" for="http2">
|
|
|
HTTP2
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-group" ng-if="data.https">
|
|
|
<label class="form-label"><span tooltips tooltip-template="used for Let's Encrypt command">E-mail</span></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.email">
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="cdn" ng-model="data.cdn">
|
|
|
<label class="form-check-label" for="cdn">
|
|
|
<span tooltips tooltip-template="cookie-free CDN subdomain">CDN</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="non_www" ng-model="data.non_www">
|
|
|
<label class="form-check-label" for="non_www">
|
|
|
<span tooltips tooltip-template="disable www subdomain">non-www</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="index_html" ng-model="data.index_html">
|
|
|
<label class="form-check-label" for="index_html">
|
|
|
<span tooltips tooltip-template="pass requests to index.html<br><br><i>Angular, React, Vue.js, Ember.js</i>...">index.html</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="card">
|
|
|
<div class="card-body">
|
|
|
<div class="form-group">
|
|
|
<label>PHP</label>
|
|
|
<select class="form-control" ng-model="data.php">
|
|
|
<option value="off">off</option>
|
|
|
<option value="tcp">TCP</option>
|
|
|
<option value="5.x">5.x socket</option>
|
|
|
<option value="7.0">7.0 socket</option>
|
|
|
<option value="7.1">7.1 socket</option>
|
|
|
<option value="7.2">7.2 socket</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
<div class="form-check" ng-if="data.php !== 'off'">
|
|
|
<input class="form-check-input" type="checkbox" id="index_php" ng-model="data.index_php">
|
|
|
<label class="form-check-label" for="index_php">
|
|
|
<span tooltips tooltip-template="pass requests to index.php<br><br><i>Laravel, Lumen, Symfony, Zend, CodeIgniter, Yii, CakePHP, Slim...</i>">index.php</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check" ng-if="data.php !== 'off'">
|
|
|
<input class="form-check-input" type="checkbox" id="wordpress" ng-model="data.wordpress">
|
|
|
<label class="form-check-label" for="wordpress">
|
|
|
<span tooltips tooltip-template="WordPress security rules">WordPress</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="card">
|
|
|
<div class="card-body">
|
|
|
<label class="form-label">File structure</label>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="radio" id="unified" ng-model="data.file_structure" value="unified">
|
|
|
<label class="form-check-label" for="unified">
|
|
|
<span tooltips tooltip-template="combine config to single file<br><br><i>if possible</i>">unified</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="radio" id="separated" ng-model="data.file_structure" value="separated">
|
|
|
<label class="form-check-label" for="separated">
|
|
|
<span tooltips tooltip-template="multiple config files<br><br><i>ideal for multi-domain environment</i>">separated</span>
|
|
|
</label>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="card">
|
|
|
<div class="card-body">
|
|
|
<div class="form-group">
|
|
|
<label><code>worker_processes</code></label>
|
|
|
<select class="form-control" ng-model="data.worker_processes">
|
|
|
<option value="auto">auto</option>
|
|
|
<option value="1">1</option>
|
|
|
<option value="2">2</option>
|
|
|
<option value="3">3</option>
|
|
|
<option value="4">4</option>
|
|
|
<option value="5">5</option>
|
|
|
<option value="6">6</option>
|
|
|
<option value="7">7</option>
|
|
|
<option value="8">8</option>
|
|
|
<option value="9">9</option>
|
|
|
<option value="10">10</option>
|
|
|
<option value="11">11</option>
|
|
|
<option value="12">12</option>
|
|
|
<option value="13">13</option>
|
|
|
<option value="14">14</option>
|
|
|
<option value="15">15</option>
|
|
|
<option value="16">16</option>
|
|
|
</select>
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><code>user</code></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.user">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><code>pid</code></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.pid">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><code>access_log</code></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.access_log">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><code>error_log</code></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.error_log">
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="gzip" ng-model="data.gzip">
|
|
|
<label class="form-check-label" for="gzip">
|
|
|
<code>gzip</code>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="server_tokens" ng-model="data.server_tokens">
|
|
|
<label class="form-check-label" for="server_tokens">
|
|
|
<code>server_tokens</code>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="log_not_found" ng-model="data.log_not_found">
|
|
|
<label class="form-check-label" for="log_not_found">
|
|
|
<code>log_not_found</code>
|
|
|
</label>
|
|
|
</div>
|
|
|
<div class="form-check">
|
|
|
<input class="form-check-input" type="checkbox" id="limit_req" ng-model="data.limit_req">
|
|
|
<label class="form-check-label" for="limit_req">
|
|
|
<span tooltips tooltip-template="requests throttle"><code>limit_req</code></span>
|
|
|
</label>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="card">
|
|
|
<div class="card-body">
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><span tooltips tooltip-template="{{ extensions.assets }}">assets <code>expires</code></span></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.expires_assets">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><span tooltips tooltip-template="{{ extensions.images }}|{{ extensions.audio }}|{{ extensions.video }}">media <code>expires</code></span></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.expires_media">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><span tooltips tooltip-template="{{ extensions.svg }}">svg <code>expires</code></span></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.expires_svg">
|
|
|
</div>
|
|
|
<div class="form-group">
|
|
|
<label class="form-label"><span tooltips tooltip-template="{{ extensions.fonts }}">fonts <code>expires</code></span></label>
|
|
|
<input type="text" class="form-control form-control-sm" ng-model="data.expires_fonts">
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-md-6 col-lg-7 files">
|
|
|
<div class="row" ng-cloak>
|
|
|
<div ng-if="data.https" class="col-xl-12">
|
|
|
<div class="commands">
|
|
|
<pre><code class="hljs bash"><span class="hljs-comment"># HTTPS: create Diffie-Hellman keys</span>
|
|
|
<span class="hljs-section">openssl dhparam</span> <span class="hljs-attribute">-dsaparam</span> <span class="hljs-attribute">-out</span> /etc/nginx/dhparam.pem <span class="hljs-number">4096</span>
|
|
|
|
|
|
<span class="hljs-comment"># HTTPS: create ACME-challenge common directory</span>
|
|
|
<span class="hljs-section">sudo</span> <span class="hljs-attribute">-u</span> {{ data.user }} <span class="hljs-section">sh</span> <span class="hljs-attribute">-c</span> "<span class="hljs-section">mkdir</span> <span class="hljs-attribute">-p</span> /var/www/_letsencrypt"
|
|
|
|
|
|
<span class="hljs-comment"># HTTPS: certbot (obtain certificates)</span>
|
|
|
<span class="hljs-section">certbot certonly</span> <span class="hljs-attribute">--webroot</span> <span class="hljs-attribute" tooltips tooltip-template="--domain">-d</span> {{ data.domain }} <span class="hljs-attribute" tooltips tooltip-template="--domain">-d</span> www.{{ data.domain }}<span ng-if="data.cdn"> <span class="hljs-attribute" tooltips tooltip-template="--domain">-d</span> cdn.{{ data.domain }}</span> <span class="hljs-attribute">--email</span> {{ data.email }} <span class="hljs-attribute" tooltips tooltip-template="--webroot-path">-w</span> /var/www/_letsencrypt <span class="hljs-attribute" tooltips tooltip-template="--non-interactive">-n</span> <span class="hljs-attribute">--agree-tos</span> <span class="hljs-attribute">--force-renewal</span></code></pre>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="file" ng-class="data.file_structure === 'separated' || data.https || (data.php !== 'off' && data.wordpress) ? 'col-xl-6' : 'col-xl-12'">
|
|
|
<strong>/etc/nginx/nginx.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-nginx" ngclipboard-success="clipboardSuccess('nginx.conf')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === 'nginx.conf'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/nginx.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-nginx" class="code highlighted"></div>
|
|
|
</div>
|
|
|
<div class="col-xl-6 file" ng-if="data.file_structure === 'separated'">
|
|
|
<strong>/etc/nginx/sites-enabled/{{ data.domain }}.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-domain" ngclipboard-success="clipboardSuccess('example.com')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === 'example.com'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/example.com.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-domain" class="code highlighted"></div>
|
|
|
</div>
|
|
|
<div class="col-xl-6 file" ng-if="data.https">
|
|
|
<strong>/etc/nginx/_ssl.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-ssl" ngclipboard-success="clipboardSuccess('_ssl.conf')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === '_ssl.conf'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/_ssl.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-ssl" class="code highlighted"></div>
|
|
|
</div>
|
|
|
<div class="col-xl-6 file" ng-if="data.file_structure === 'separated' && data.https">
|
|
|
<strong>/etc/nginx/_letsencrypt.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-letsencrypt" ngclipboard-success="clipboardSuccess('_letsencrypt.conf')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === '_letsencrypt.conf'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/_letsencrypt.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-letsencrypt" class="code highlighted"></div>
|
|
|
</div>
|
|
|
<div class="col-xl-6 file" ng-if="data.file_structure === 'separated'">
|
|
|
<strong>/etc/nginx/_general.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-general" ngclipboard-success="clipboardSuccess('_general.conf')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === '_general.conf'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/_general.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-general" class="code highlighted"></div>
|
|
|
</div>
|
|
|
<div class="col-xl-6 file" ng-if="data.php !== 'off' && data.file_structure === 'separated'">
|
|
|
<strong>/etc/nginx/_php.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-php" ngclipboard-success="clipboardSuccess('_php.conf')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === '_php.conf'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/_php.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-php" class="code highlighted"></div>
|
|
|
</div>
|
|
|
<div class="col-xl-6 file" ng-if="data.php !== 'off' && (data.file_structure === 'separated' || (data.php !== 'off' && data.wordpress))">
|
|
|
<strong>/etc/nginx/_php_fastcgi.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-php_fastcgi" ngclipboard-success="clipboardSuccess('_php_fastcgi.conf')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === '_php_fastcgi.conf'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/_php_fastcgi.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-php_fastcgi" class="code highlighted"></div>
|
|
|
</div>
|
|
|
<div class="col-xl-6 file" ng-if="data.php !== 'off' && data.wordpress && data.file_structure === 'separated'">
|
|
|
<strong>/etc/nginx/_wordpress.conf</strong>
|
|
|
<button class="btn btn-light btn-clipboard" ngclipboard data-clipboard-target="#file-wordpress" ngclipboard-success="clipboardSuccess('_wordpress.conf')">
|
|
|
<img src="https://cdn.nginxconfig.io/assets/img/clipboard-dark.svg" alt="Copy to clipboard">
|
|
|
</button>
|
|
|
<span class="clipboard-success" ng-if="clipboardCopy === '_wordpress.conf'">Copied!</span>
|
|
|
<div class="code source">
|
|
|
<pre><code class="nginx" ng-include="'templates/_wordpress.conf.html'" onload="refreshHighlighting()"></code></pre>
|
|
|
</div><div id="file-wordpress" class="code highlighted"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="col-md-3 sidebar">
|
|
|
<iframe class="github-star" src="https://ghbtns.com/github-btn.html?user=valentinxxx&repo=nginxconfig.io&type=star&count=true&size=large"></iframe>
|
|
|
<div class="adsbygoogle-container">
|
|
|
<ins class="adsbygoogle"
|
|
|
style="display:block"
|
|
|
data-ad-client="ca-pub-6543577519725877"
|
|
|
data-ad-slot="1857879957"
|
|
|
data-ad-format="auto"></ins>
|
|
|
<script>
|
|
|
(window.adsbygoogle = window.adsbygoogle || []).push({});
|
|
|
</script>
|
|
|
<div class="note">⌃ advertisement ⌃</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</main>
|
|
|
<footer>
|
|
|
<div class="container-fluid">
|
|
|
Lovingly made at <img src="https://cdn.nginxconfig.io/assets/img/balaton.svg" alt="Lake Balaton" class="balaton"><span class="text-muted">(<a href="https://en.wikipedia.org/wiki/Lake_Balaton" target="_blank">Lake Balaton, Hungary</a>)</span>
|
|
|
<div class="crypto">
|
|
|
BTC: <strong>1CeKtgNStn5BGk46gt14kNMhsnJoFGUfkN</strong><br>
|
|
|
ETH: <strong>0xe84Bc747dc81329894e610747B99C6bd51437269</strong><br>
|
|
|
LTC: <strong>LRiwXxE8dPPwNn6kvApEvwrNEX5kbisr2U</strong>
|
|
|
</div>
|
|
|
</div>
|
|
|
</footer>
|
|
|
|
|
|
<script async src="https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
|
|
<script async src="https://www.googletagmanager.com/gtag/js?id=UA-3084378-31"></script>
|
|
|
<script>
|
|
|
window.dataLayer = window.dataLayer || [];
|
|
|
function gtag(){dataLayer.push(arguments);}
|
|
|
gtag('js', new Date());
|
|
|
gtag('config', 'UA-3084378-31');
|
|
|
</script>
|
|
|
<script src="https://cdn.nginxconfig.io/assets/js/highlight.min.js?v=9.12.0"></script>
|
|
|
<script src="https://cdn.nginxconfig.io/assets/js/clipboard.min.js?v=1.7.1"></script>
|
|
|
<script src="https://cdn.nginxconfig.io/assets/js/angular.min.js?v=1.6.8"></script>
|
|
|
<script src="https://cdn.nginxconfig.io/assets/js/ngclipboard.min.js?v=1.1.3"></script>
|
|
|
<script src="https://cdn.nginxconfig.io/assets/js/angular-tooltips.min.js?v=1.2.2"></script>
|
|
|
<script src="https://cdn.nginxconfig.io/assets/js/app.js"></script>
|
|
|
</body>
|
|
|
</html>
|