Showing preview only (1,333K chars total). Download the full file or copy to clipboard to get everything.
Repository: digitalocean/nginxconfig.io
Branch: master
Commit: dd290c0b706b
Files: 518
Total size: 1.2 MB
Directory structure:
gitextract_q2tmsz7t/
├── .babelrc
├── .editorconfig
├── .eslintrc.cjs
├── .github/
│ ├── ISSUE_TEMPLATE/
│ │ ├── help.md
│ │ ├── report-a-bug.md
│ │ └── request-a-feature.md
│ ├── PULL_REQUEST_TEMPLATE.md
│ └── workflows/
│ ├── do-spaces-workflow.yml
│ ├── gh-pages-workflow.yml
│ └── test-workflow.yml
├── .gitignore
├── .husky/
│ └── pre-commit
├── .lintstagedrc.json
├── .nvmrc
├── .prettierignore
├── .prettierrc.json
├── LICENSE
├── README.md
├── package.json
├── src/
│ ├── nginxconfig/
│ │ ├── build/
│ │ │ ├── prism.js
│ │ │ ├── template.js
│ │ │ └── webpack-dynamic-import.js
│ │ ├── generators/
│ │ │ ├── conf/
│ │ │ │ ├── drupal.conf.js
│ │ │ │ ├── general.conf.js
│ │ │ │ ├── joomla.conf.js
│ │ │ │ ├── letsencrypt.conf.js
│ │ │ │ ├── magento.conf.js
│ │ │ │ ├── nginx.conf.js
│ │ │ │ ├── php_fastcgi.conf.js
│ │ │ │ ├── proxy.conf.js
│ │ │ │ ├── python_uwsgi.conf.js
│ │ │ │ ├── security.conf.js
│ │ │ │ ├── website.conf.js
│ │ │ │ └── wordpress.conf.js
│ │ │ ├── ext/
│ │ │ │ └── docker.js
│ │ │ ├── index.js
│ │ │ ├── to_conf.js
│ │ │ ├── to_yaml.js
│ │ │ └── yaml/
│ │ │ └── dockerCompose.yaml.js
│ │ ├── i18n/
│ │ │ ├── de/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── en/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── es/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── fa/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── fr/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── ja/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── pl/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── pt-br/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── ru/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ ├── setup.js
│ │ │ ├── verify.js
│ │ │ ├── zh-cn/
│ │ │ │ ├── common.js
│ │ │ │ ├── index.js
│ │ │ │ ├── languages.js
│ │ │ │ └── templates/
│ │ │ │ ├── app.js
│ │ │ │ ├── callouts/
│ │ │ │ │ ├── contribute.js
│ │ │ │ │ ├── droplet.js
│ │ │ │ │ └── index.js
│ │ │ │ ├── domain_sections/
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── onion.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── presets.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── restrict.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── routing.js
│ │ │ │ │ └── server.js
│ │ │ │ ├── footer.js
│ │ │ │ ├── global_sections/
│ │ │ │ │ ├── docker.js
│ │ │ │ │ ├── https.js
│ │ │ │ │ ├── index.js
│ │ │ │ │ ├── logging.js
│ │ │ │ │ ├── nginx.js
│ │ │ │ │ ├── performance.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── reverse_proxy.js
│ │ │ │ │ ├── security.js
│ │ │ │ │ └── tools.js
│ │ │ │ ├── index.js
│ │ │ │ ├── setup.js
│ │ │ │ └── setup_sections/
│ │ │ │ ├── certbot.js
│ │ │ │ ├── download.js
│ │ │ │ ├── go_live.js
│ │ │ │ ├── index.js
│ │ │ │ └── ssl.js
│ │ │ └── zh-tw/
│ │ │ ├── common.js
│ │ │ ├── index.js
│ │ │ ├── languages.js
│ │ │ └── templates/
│ │ │ ├── app.js
│ │ │ ├── callouts/
│ │ │ │ ├── contribute.js
│ │ │ │ ├── droplet.js
│ │ │ │ └── index.js
│ │ │ ├── domain_sections/
│ │ │ │ ├── https.js
│ │ │ │ ├── index.js
│ │ │ │ ├── logging.js
│ │ │ │ ├── onion.js
│ │ │ │ ├── php.js
│ │ │ │ ├── presets.js
│ │ │ │ ├── python.js
│ │ │ │ ├── restrict.js
│ │ │ │ ├── reverse_proxy.js
│ │ │ │ ├── routing.js
│ │ │ │ └── server.js
│ │ │ ├── footer.js
│ │ │ ├── global_sections/
│ │ │ │ ├── docker.js
│ │ │ │ ├── https.js
│ │ │ │ ├── index.js
│ │ │ │ ├── logging.js
│ │ │ │ ├── nginx.js
│ │ │ │ ├── performance.js
│ │ │ │ ├── python.js
│ │ │ │ ├── reverse_proxy.js
│ │ │ │ ├── security.js
│ │ │ │ └── tools.js
│ │ │ ├── index.js
│ │ │ ├── setup.js
│ │ │ └── setup_sections/
│ │ │ ├── certbot.js
│ │ │ ├── download.js
│ │ │ ├── go_live.js
│ │ │ ├── index.js
│ │ │ └── ssl.js
│ │ ├── mount.js
│ │ ├── scss/
│ │ │ ├── _callout.scss
│ │ │ ├── _code.scss
│ │ │ ├── _columns.scss
│ │ │ ├── _fields.scss
│ │ │ ├── _files.scss
│ │ │ ├── _footer.scss
│ │ │ ├── _header.scss
│ │ │ ├── _modals.scss
│ │ │ ├── _panel.scss
│ │ │ ├── _setup.scss
│ │ │ ├── _tabs.scss
│ │ │ ├── _vue-select.scss
│ │ │ └── style.scss
│ │ ├── templates/
│ │ │ ├── app.vue
│ │ │ ├── callouts/
│ │ │ │ ├── contribute.vue
│ │ │ │ └── droplet.vue
│ │ │ ├── domain.vue
│ │ │ ├── domain_sections/
│ │ │ │ ├── https.vue
│ │ │ │ ├── index.js
│ │ │ │ ├── logging.vue
│ │ │ │ ├── onion.vue
│ │ │ │ ├── php.vue
│ │ │ │ ├── presets.vue
│ │ │ │ ├── python.vue
│ │ │ │ ├── restrict.vue
│ │ │ │ ├── reverse_proxy.vue
│ │ │ │ ├── routing.vue
│ │ │ │ └── server.vue
│ │ │ ├── footer.vue
│ │ │ ├── global.vue
│ │ │ ├── global_sections/
│ │ │ │ ├── docker.vue
│ │ │ │ ├── https.vue
│ │ │ │ ├── index.js
│ │ │ │ ├── logging.vue
│ │ │ │ ├── nginx.vue
│ │ │ │ ├── performance.vue
│ │ │ │ ├── python.vue
│ │ │ │ ├── reverse_proxy.vue
│ │ │ │ ├── security.vue
│ │ │ │ └── tools.vue
│ │ │ ├── inputs/
│ │ │ │ ├── checkbox.vue
│ │ │ │ └── radio.vue
│ │ │ ├── prism/
│ │ │ │ ├── bash.vue
│ │ │ │ ├── docker.vue
│ │ │ │ ├── nginx.vue
│ │ │ │ └── yaml.vue
│ │ │ ├── setup.vue
│ │ │ └── setup_sections/
│ │ │ ├── certbot.vue
│ │ │ ├── download.vue
│ │ │ ├── go_live.vue
│ │ │ ├── index.js
│ │ │ └── ssl.vue
│ │ └── util/
│ │ ├── analytics.js
│ │ ├── angular_backwards_compatibility.js
│ │ ├── browser_language.js
│ │ ├── camel_to_snake.js
│ │ ├── common_hsts.js
│ │ ├── computed_from_defaults.js
│ │ ├── deep_merge.js
│ │ ├── defaults.js
│ │ ├── delegated_from_defaults.js
│ │ ├── export_data.js
│ │ ├── get_ssl_certificate.js
│ │ ├── import_data.js
│ │ ├── is_changed.js
│ │ ├── is_object.js
│ │ ├── language_packs.js
│ │ ├── log.js
│ │ ├── logging.js
│ │ ├── php_path.js
│ │ ├── php_upstream.js
│ │ ├── prism_bundle.js
│ │ ├── share_query.js
│ │ ├── snake_to_camel.js
│ │ ├── ssl_profiles.js
│ │ ├── types_extensions.js
│ │ └── vue_backwards_compatibility.js
│ └── static/
│ └── robots.txt
├── test/
│ └── testBrowserLanguage.js
└── vue.config.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .babelrc
================================================
{
"presets": [[
"@babel/preset-env",
{
"corejs": "3",
"useBuiltIns": "usage"
}
]],
"plugins": [
"@babel/plugin-transform-runtime",
"@babel/plugin-proposal-class-properties"
]
}
================================================
FILE: .editorconfig
================================================
root = true
[*]
end_of_line = lf
insert_final_newline = true
indent_style = space
indent_size = 4
[*.scss]
indent_size = 2
[*.json]
indent_size = 2
[*.yml]
indent_size = 2
================================================
FILE: .eslintrc.cjs
================================================
module.exports = {
env: {
browser: true,
node: true,
},
extends: ['eslint:recommended', 'plugin:vue/recommended', 'prettier'],
parserOptions: {
parser: '@babel/eslint-parser',
ecmaVersion: 2018,
sourceType: 'module',
requireConfigFile: false,
},
rules: {
'linebreak-style': ['error', 'unix'],
semi: ['error', 'always'],
'comma-dangle': ['error', 'always-multiline'],
'vue/require-v-for-key': 0,
'vue/require-default-prop': 0,
'vue/no-v-html': 0,
'vue/max-attributes-per-line': 0,
'vue/html-indent': ['error', 4],
'vue/script-indent': [
'error',
4,
{
baseIndent: 1,
switchCase: 1,
},
],
'vue/no-unused-vars': 'warn',
'vue/html-self-closing': 0,
'vue/multi-word-component-names': 0,
'vue/no-reserved-component-names': 0,
'eol-last': ['error', 'always'],
'prettier/prettier': 'error',
'import/extensions': [
'error',
'always',
{
js: 'always',
vue: 'always',
},
],
},
globals: {
describe: true,
expect: true,
it: true,
test: true,
},
plugins: ['prettier', 'import'],
};
================================================
FILE: .github/ISSUE_TEMPLATE/help.md
================================================
---
name: Help ❓
about: Encountered a problem with the tool?
---
<!-- Don't write inside the arrows as they will be hidden when you post your issue.
If you are in need of help, please follow the following steps:
1. Fill out the template.
This will help us understand what problem you've encountered and help us
find a solution.
2. Delete this line and all above lines before posting your issue! -->
## Information
<!-- Head to https://www.whatismybrowser.com/ and copy/paste the
'Send this link to Tech Support to share your system info:' link here -->
## Help request
### Problem
<!-- What problem did you encounter? -->
### What I have tried
<!-- What have you tried so far? -->
### Screenshots
<!-- If relevant, include any screenshots here. -->
================================================
FILE: .github/ISSUE_TEMPLATE/report-a-bug.md
================================================
---
name: Report a bug 🐛
about: Report a bug with the tool. Only use this if you're 100% sure there's something wrong, otherwise, try "Help".
---
<!-- Don't put anything inside this block, as it won't be included in the issue.
If you are reporting a bug, please follow the following steps:
1. Fill out the template in full.
This will help us understand the situation in which the bug occurred.
2. If you are reporting a visual bug, please include screenshots of the
tool to help us diagnose the problem.
3. Make sure not to write between the arrows, as anything there will be hidden.
4. Delete this line and all above lines before posting your issue! -->
## Information
<!-- Head to https://www.whatismybrowser.com/ and copy/paste the
'Send this link to Tech Support to share your system info:' link here -->
## Details
### Description
<!-- Replace this with a brief summary of the bug. -->
### Steps to reproduce
<!-- Replace this with exactly what you did to cause the bug. -->
### Expected behavior
<!-- Replace this with what you expected to happen. -->
### Screenshots
<!-- Replace this with screenshots, if necessary. -->
================================================
FILE: .github/ISSUE_TEMPLATE/request-a-feature.md
================================================
---
name: Request a feature 🆕
about: Suggest a new feature that you would like in the tool!
---
<!-- Fill out the template. Don't write inside the arrows as they will be hidden
when you post your issue.
If you have a feature suggestion for the tool, read through the following steps:
1. Fill out the template.
This will help us understand what you're requesting and why you want us
to add it.
2. Keep it simple.
Make sure it's easy to understand what you're requesting. A good way is
to keep it to one request per GitHub issue, as we can then easily track
feature requests.
3. Check whether it has already been asked or added.
You can search the exiting GitHub issues to see if your feature has
already been requested.
4. Ask yourself: "Does this idea/feature belong as part of the tool?"
Whilst we'd love to be able to add every feature that every user wants,
we want to keep the site as small and as fast as possible by limiting how
much code we have. Make sure the feature you are requesting is something
that others will benefit from, not just you.
5. Delete this line and all above lines before posting your issue! -->
## Feature request
### Feature description
<!-- What feature are you suggesting? -->
### How the feature is useful
<!-- How is the feature useful to users of the tool? -->
================================================
FILE: .github/PULL_REQUEST_TEMPLATE.md
================================================
## Type of Change
<!-- What part of the source are you modifying? Remove the irrelevant options. -->
- **Build Scripts:** <!-- Scripts relating to building, testing or CI -->
- **Tool Source:** <!-- Which part of the tool source? Vue, JS, SCSS? -->
- **Something else:** <!-- Say what it is, here! -->
## What issue does this relate to?
<!-- Use a GitHub keyword ('resolves #xx', 'fixes #xx', 'closes #xx') to automatically close the relevant issue. -->
### What should this PR do?
<!-- Write a quick bullet point summary of the changes this PR should be making. -->
### What are the acceptance criteria?
<!-- Write a list of what should reviewers be checking before they approve this PR. -->
<!-- If there are UI changes, include before and after screenshots in a table for comparison. -->
================================================
FILE: .github/workflows/do-spaces-workflow.yml
================================================
name: Deploy to DigitalOcean Spaces
on: push
permissions:
contents: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
- name: Install dependencies
run: npm ci
- name: Build tool
run: npm run build
env:
NODE_ENV: production
- name: Deploy commit to DigitalOcean Spaces
run: aws s3 sync ./dist s3://${{ secrets.SPACES_BUCKET }}/commits/nginxconfig/${{ github.sha }} --endpoint=https://${{ secrets.SPACES_REGION }}.digitaloceanspaces.com --acl public-read --content-encoding utf8
env:
AWS_ACCESS_KEY_ID: ${{ secrets.SPACES_ACCESS_KEY_ID }}
AWS_SECRET_ACCESS_KEY: ${{ secrets.SPACES_SECRET_ACCESS_KEY }}
AWS_DEFAULT_REGION: ${{ secrets.SPACES_REGION }}
- name: Leave a comment on commit
run: npm run deploy:spaces:comment
env:
REPO_NAME: ${{ github.repository }}
COMMIT_SHA: ${{ github.sha }}
GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }}
SPACES_REGION: ${{ secrets.SPACES_REGION }}
SPACES_BUCKET: ${{ secrets.SPACES_BUCKET }}
================================================
FILE: .github/workflows/gh-pages-workflow.yml
================================================
name: Test and deploy to GitHub Pages
on:
push:
branches:
- master
permissions:
contents: write
concurrency:
group: gh-pages-workflow
cancel-in-progress: true
jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
- name: Install dependencies
run: npm ci
- name: Test before production
run: npm test
- name: Build tool
run: npm run build
env:
NODE_ENV: production
- name: Deploy master to GitHub Pages
uses: JamesIves/github-pages-deploy-action@v4
with:
folder: dist
clean: true
single-commit: true
================================================
FILE: .github/workflows/test-workflow.yml
================================================
name: Test commit or pull request
on: [push, pull_request]
jobs:
eslint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
- name: Install dependencies
run: npm ci
- name: Test with eslint
run: npm run test:eslint
stylelint:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
- name: Install dependencies
run: npm ci
- name: Test with stylelint
run: npm run test:stylelint
i18n-packs:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
- name: Install dependencies
run: npm ci
- name: Test i18n packs integrity
run: npm run test:i18n-packs
prettier:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v3
- name: Use Node.js
uses: actions/setup-node@v3
with:
node-version-file: .nvmrc
cache: npm
- name: Install dependencies
run: npm ci
- name: Test with prettier
run: npm run test:prettier
================================================
FILE: .gitignore
================================================
node_modules
.cache
.idea
.vscode
.DS_Store
/build/
/dist/
/dev/
.eslintcache
================================================
FILE: .husky/pre-commit
================================================
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
npx lint-staged
================================================
FILE: .lintstagedrc.json
================================================
{
"*.{js,vue}": [
"prettier --write",
"eslint --quiet --cache --fix"
],
"*.scss": [
"stylelint --config node_modules/do-bulma/.stylelintrc.json --fix"
]
}
================================================
FILE: .nvmrc
================================================
v20.9.0
================================================
FILE: .prettierignore
================================================
package.json
package-lock.json
================================================
FILE: .prettierrc.json
================================================
{
"singleQuote": true,
"trailingComma": "all",
"vueIndentScriptAndStyle": true,
"htmlWhitespaceSensitivity": "ignore",
"printWidth": 100,
"tabWidth": 4,
"singleAttributePerLine": true
}
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2020 DigitalOcean
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
================================================
FILE: README.md
================================================
[](https://github.com/digitalocean/nginxconfig.io/stargazers)
[](https://github.com/digitalocean/nginxconfig.io/graphs/contributors)
[](https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE)
<br />
[](https://github.com/digitalocean/nginxconfig.io/issues?q=is%3Aissue+is%3Aclosed)
[](https://github.com/digitalocean/nginxconfig.io/pulls?q=is%3Apr+is%3Aclosed)
[](https://github.com/digitalocean/nginxconfig.io/issues)
[](https://github.com/digitalocean/nginxconfig.io/pulls)
[](https://do.co/nginxconfig)
<h3 align="center">⚙️ NGINX configuration generator on steroids 💉</h3>
<p align="center">
The only tool you'll ever need to configure your NGINX server.
<br />
<a href="https://do.co/nginxconfig"><strong>do.co/nginxconfig »</strong></a>
<br />
<br />
<a href="https://github.com/digitalocean/nginxconfig.io/issues/new?template=report-a-bug.md">Report a bug</a>
·
<a href="https://github.com/digitalocean/nginxconfig.io/issues/new?template=request-a-feature.md">Request a feature</a>
</p>
<br />
# ✨ [NGINX Config](https://do.co/nginxconfig)
NGINX is so much more than just a webserver. You already knew that, probably.
We love NGINX, because:
* Low memory usage
* High concurrency
* Asynchronous event-driven architecture
* Load balancing
* Reverse proxying
* FastCGI support with caching (PHP)
* Amazing fast handling of static files
* TLS/SSL with SNI
A lot of features with corresponding configuration directives.
You can deep dive into the [NGINX documentation](http://nginx.org/en/docs/) right now OR you can [use this tool](https://do.co/nginxconfig) to check
how NGINX works, observe how your inputs are affecting the output, and **generate the best config for your specific
use-case** (in parallel you can also still use the docs).
## 🚀 Usage
`GOTO` **[`do.co/nginxconfig`](https://do.co/nginxconfig)**
**Features:**
HTTPS, HTTP/2, IPv6, certbot, HSTS, security headers, SSL profiles, OCSP resolvers, caching, gzip, brotli, fallback
routing, reverse proxy, www/non-www redirect, CDN, PHP (TCP/socket, WordPress, Drupal, Magento, Joomla), Node.js support, Python
(Django) server, etc.
## 👨💻 Author
### Rewrite & Maintenance
**Matt (IPv4) Cowley <me@mattcowley.co.uk> (https://mattcowley.co.uk)**
* GitHub: [@MattIPv4](https://github.com/MattIPv4)
### Original version
**Bálint Szekeres <balint@szekeres.me> (https://balint.szekeres.me)**
* GitHub: [@0xB4LINT](https://github.com/0xB4LINT)
* LinkedIn: [@0xB4LINT](https://www.linkedin.com/in/0xB4LINT/)
## ▶️ Development
1. Clone the repository
```sh
git clone https://github.com/digitalocean/nginxconfig.io.git
```
2. Install NPM packages
```sh
npm ci
```
3. Run the development server *(with file watchers)*
```sh
npm run dev
```
4. Open the development site **[localhost:8080](http://localhost:8080)**
5. Lint your code *(eslint & stylelint)*
```sh
npm test
```
6. Build for production *(to the `dist` directory)*
```sh
npm run build
```
## 🤝 Contributing
Contributions are what make the open source community such an amazing place to be learn, inspire, and create.
Any contributions you make are **greatly appreciated**.
1. Fork the Project
2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`)
3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`)
4. Push to the Branch (`git push origin feature/AmazingFeature`)
5. Open a Pull Request
## ⚒️ Built With
* [Vue.js](https://vuejs.org/) - Template handling & app generation
* [Bulma](https://bulma.io/) - Base styling, customised by [do-bulma](https://github.com/do-community/do-bulma)
* [Prism](https://prismjs.com/) - Bash & NGINX syntax highlighting
## 📚 Resources
* [Mozilla SSL Configuration Generator v5](https://ssl-config.mozilla.org)
* [Mozilla SSL Configuration Generator](https://mozilla.github.io/server-side-tls/ssl-config-generator/)
* [OWASP TLS Cipher String Cheat Sheet](https://github.com/OWASP/CheatSheetSeries/blob/master/cheatsheets/TLS_Cipher_String_Cheat_Sheet.md)
* [Nginx Optimization: understanding sendfile, tcp_nodelay and tcp_nopush](https://thoughts.t37.net/nginx-optimization-understanding-sendfile-tcp-nodelay-and-tcp-nopush-c55cdd276765)
* [NGINX Tuning For Best Performance](https://gist.github.com/denji/8359866)
* [Hardening Your HTTP Security Headers](https://www.keycdn.com/blog/http-security-headers/)
* [h5bp/server-configs-nginx](https://github.com/h5bp/server-configs-nginx)
* [Diffie-Hellman DSA-like parameters](https://security.stackexchange.com/questions/95178/diffie-hellman-parameters-still-calculating-after-24-hours/95184#95184)
* [hstspreload.org](https://hstspreload.org)
* [Optimal value for nginx worker_connections](https://serverfault.com/questions/787919/optimal-value-for-nginx-worker-connections)
## ⭐️ Show your support
Give a ⭐️ if this project helped you!
## 📝 License
Copyright © 2020 [DigitalOcean, Inc](https://www.digitalocean.com) <contact@digitalocean.com> (https://www.digitalocean.com).
<br />
This project is licensed under the [MIT](https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE) license.
================================================
FILE: package.json
================================================
{
"name": "nginxconfig.io",
"version": "1.0.0",
"description": "NGINX config generator on steroids",
"license": "MIT",
"private": true,
"engines": {
"node": "20.9.0"
},
"main": "src/nginxconfig/mount.js",
"type": "module",
"scripts": {
"build": "npm run build:clean && npm run build:template && npm run build:prism && npm run build:static && npm run build:tool",
"build:clean": "do-vue clean",
"build:template": "do-vue template && node src/nginxconfig/build/template.js",
"build:prism": "node src/nginxconfig/build/prism.js",
"build:static": "copyfiles --up 2 src/static/{*,**/*} dist",
"build:tool": "vue-cli-service build src/nginxconfig/mount.js --no-clean",
"dev": "npm run build:template && npm run build:prism && npm run dev:tool",
"dev:tool": "vue-cli-service serve src/nginxconfig/mount.js",
"deploy:spaces:comment": "do-vue comment nginxconfig",
"test": "npm run test:prettier:fix && npm run test:eslint && npm run test:stylelint && npm run test:i18n-packs && npm run test:jest",
"test:jest": "jest --env=jsdom /test/.*.js?$",
"test:fix": "npm run test:prettier:fix && npm run test:eslint:fix",
"test:eslint": "eslint 'src/**/*.{js,vue}' --cache",
"test:eslint:fix": "npm run test:eslint -- --fix",
"test:stylelint": "stylelint 'src/**/*.scss' --config node_modules/do-bulma/.stylelintrc.json",
"test:i18n-packs": "node src/nginxconfig/i18n/verify.js",
"test:prettier": "prettier 'src/**/*.{js,vue}' --check",
"test:prettier:fix": "prettier --write 'src/**/*.{js,vue}'",
"prepare": "husky install"
},
"jest": {
"testRegex": "/test/.*.js?$"
},
"repository": {
"type": "git",
"url": "git+https://github.com/digitalocean/nginxconfig.io.git"
},
"keywords": [
"nginx"
],
"author": "DigitalOcean",
"bugs": {
"url": "https://github.com/digitalocean/nginxconfig.io/issues"
},
"homepage": "https://github.com/digitalocean/nginxconfig.io#readme",
"dependencies": {
"clipboard": "^2.0.11",
"clone": "^2.1.2",
"do-bulma": "github:do-community/do-bulma",
"do-vue": "github:do-community/do-vue",
"escape-html": "^1.0.3",
"files-diff": "0.0.6",
"json-to-pretty-yaml": "^1.2.2",
"memory-tar-create": "0.0.3",
"pretty-checkbox-vue": "^1.1.9",
"prismjs": "^1.29.0",
"qs": "^6.11.2",
"simple-js-sha2-256": "^1.0.7",
"vue": "^3.4.15",
"vue-i18n": "^9.9.0",
"vue-select": "^4.0.0-beta.6",
"webpack-require-from": "^1.8.6"
},
"devDependencies": {
"@babel/eslint-parser": "^7.23.3",
"@babel/plugin-proposal-class-properties": "^7.18.6",
"@babel/plugin-transform-runtime": "^7.23.7",
"@babel/preset-env": "^7.23.8",
"@babel/runtime": "^7.23.8",
"@vue/cli-service": "^5.0.8",
"ajv": "^8.12.0",
"chalk": "^5.3.0",
"copyfiles": "^2.4.1",
"core-js": "^3.35.1",
"duplicate-package-checker-webpack-plugin": "^3.0.0",
"eslint": "^8.56.0",
"eslint-config-prettier": "^9.1.0",
"eslint-plugin-import": "^2.30.0",
"eslint-plugin-prettier": "^5.1.3",
"eslint-plugin-vue": "^9.20.1",
"husky": "^8.0.3",
"jest": "^29.7.0",
"jest-environment-jsdom": "^29.7.0",
"lint-staged": "^15.2.10",
"node-fetch": "^3.3.2",
"postcss": "^8.4.33",
"prettier": "3.2.4",
"sass": "^1.70.0",
"sass-loader": "^14.0.0",
"stylelint": "^16.2.0",
"stylelint-config-standard-scss": "^13.0.0",
"stylelint-order": "^6.0.4",
"vue-template-compiler": "^2.7.16",
"webpack": "^5.94.0",
"webpack-bundle-analyzer": "^4.10.1"
},
"overrides": {
"@vue/cli-service": {
"mini-css-extract-plugin": "^1.6.2",
"@achrinza/node-ipc": "^10.1.10"
},
"pretty-checkbox-vue": {
"vue": "^3.0.0"
}
}
}
================================================
FILE: src/nginxconfig/build/prism.js
================================================
/*
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import { promises as fs } from 'fs';
import { URL } from 'url';
import fetch from 'node-fetch';
const main = async () => {
const resp = await fetch('https://assets.digitalocean.com/prism/prism.css');
const text = await resp.text();
// Fix $676767 -> #676767
const fixed = text.replace(/:\s*\$((?:[0-9a-fA-F]{3}){1,2});/g, ':#$1;');
const buildDir = '../../../build';
await fs.writeFile(new URL(`${buildDir}/prism.css`, import.meta.url), fixed);
};
main()
.then(() => {})
.catch((err) => {
console.error(err);
process.exit(1);
});
================================================
FILE: src/nginxconfig/build/template.js
================================================
/*
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import fs from 'fs';
import { URL } from 'url';
// Fetch the posthtml template and convert it to an ejs template
const main = () => {
const buildDir = '../../../build';
let template = fs.readFileSync(new URL(`${buildDir}/base.html`, import.meta.url), 'utf8');
// Inject our title now
template = template.replace(
'<block name="title"><title>DigitalOcean</title></block>',
'<title>NGINXConfig | DigitalOcean</title>',
);
// Inject our app mounting point
template = template.replace('<block name="content"></block>', '<div id="app"></div>');
fs.writeFileSync(new URL(`${buildDir}/index.html`, import.meta.url), template);
};
main();
================================================
FILE: src/nginxconfig/build/webpack-dynamic-import.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import { info } from '../util/log.js';
const originalSrcDir = document.currentScript.src.split('/').slice(0, -2).join('/') + '/';
window.__webpackDynamicImportURL = () => {
info(`Using ${originalSrcDir} for webpack dynamic import`);
return originalSrcDir;
};
================================================
FILE: src/nginxconfig/generators/conf/drupal.conf.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default (global) => {
const config = {};
config['# Drupal: deny private files'] = '';
config[
'location ~ ((^|/)\\.|^.*\\.yml$|^/sites/.*/private/|^/sites/[^/]+/[^/]*settings.*\\.php$)'
] = {
deny: 'all',
return: '404',
};
config['# Drupal: deny php in files'] = '';
config['location ~ ^/sites/[^/]+/files/.*\\.php$'] = {
deny: 'all',
};
config['# Drupal: deny php in vendor'] = '';
config['location ~ /vendor/.*\\.php$'] = {
deny: 'all',
};
config['# Drupal: allow image styles to be handled by the CMS'] = '';
config['location ~ ^/sites/[^/]+/files/styles/'] = {
try_files: '$uri /index.php?q=$uri&$args',
};
config['# Drupal: handle private files'] = '';
config['location ~ ^(/[a-z\\-]+)?/system/files/'] = {
try_files: '$uri /index.php?$query_string',
};
if (global.security.limitReq.computed) {
config['# Drupal: throttle user functions'] = '';
config['location ~ ^/user/(?:login|register|password)'] = {
limit_req: 'zone=login burst=2 nodelay',
try_files: '$uri /index.php?$query_string',
};
}
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/general.conf.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import { gzipTypes, extensions } from '../../util/types_extensions.js';
export default (domains, global) => {
const config = {};
config['# favicon.ico'] = '';
config['location = /favicon.ico'] = {
log_not_found: 'off',
};
config['# robots.txt'] = '';
config['location = /robots.txt'] = {
log_not_found: 'off',
};
if (global.performance.disableHtmlCaching.computed) {
// Disable HTML caching for changes take effect in time
config['# Disable HTML caching'] = '';
const loc = `location ~* \\.(?:${extensions.html})$`;
config[loc] = {
add_header: 'Cache-Control "no-cache"',
};
}
if (domains.every((d) => d.routing.root.computed)) {
if (
global.performance.assetsExpiration.computed ===
global.performance.mediaExpiration.computed
) {
if (global.performance.assetsExpiration.computed) {
// Assets & media combined
config['# assets, media'] = '';
const loc = `location ~* \\.(?:${extensions.assets}|${extensions.images}|${extensions.audio}|${extensions.video})$`;
config[loc] = {
expires: global.performance.assetsExpiration.computed,
};
}
} else {
// Assets & media separately
if (global.performance.assetsExpiration.computed) {
config['# assets'] = '';
const loc = `location ~* \\.(?:${extensions.assets})$`;
config[loc] = {
expires: global.performance.assetsExpiration.computed,
};
}
if (global.performance.mediaExpiration.computed) {
config['# media'] = '';
const loc = `location ~* \\.(?:${extensions.images}|${extensions.audio}|${extensions.video})$`;
config[loc] = {
expires: global.performance.mediaExpiration.computed,
};
}
}
if (
global.performance.svgExpiration.computed ===
global.performance.fontsExpiration.computed
) {
if (global.performance.svgExpiration.computed) {
// SVG & fonts combined
config['# svg, fonts'] = '';
const loc = `location ~* \\.(?:${extensions.svg}|${extensions.fonts})$`;
config[loc] = {
add_header: 'Access-Control-Allow-Origin "*"',
expires: global.performance.svgExpiration.computed,
};
}
} else {
// SVG & fonts separately
if (global.performance.svgExpiration.computed) {
config['# svg'] = '';
const loc = `location ~* \\.${extensions.svg}$`;
config[loc] = {
add_header: 'Access-Control-Allow-Origin "*"',
expires: global.performance.svgExpiration.computed,
};
}
if (global.performance.fontsExpiration.computed) {
config['# fonts'] = '';
const loc = `location ~* \\.${extensions.fonts}$`;
config[loc] = {
add_header: 'Access-Control-Allow-Origin "*"',
expires: global.performance.fontsExpiration.computed,
};
}
}
}
if (global.performance.gzipCompression.computed) {
config['# gzip'] = '';
config.gzip = 'on';
config.gzip_vary = 'on';
config.gzip_proxied = 'any';
config.gzip_comp_level = 6;
config.gzip_types = gzipTypes;
}
if (global.performance.brotliCompression.computed) {
config['# brotli'] = '';
config.brotli = 'on';
config.brotli_comp_level = 6;
config.brotli_types = gzipTypes;
}
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/joomla.conf.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default () => {
const config = {};
config['# Joomla: deny running scripts inside writable directories'] = '';
config['location ~* /(images|cache|media|logs|tmp)/.*\\.(php|pl|py|jsp|asp|sh|cgi)$'] = {
return: '403',
error_page: '403 /403_error.html',
};
config['# Joomla: caching of files'] = '';
config['location ~* \\.(ico|pdf|flv)$'] = {
expires: '1y',
};
config['# Joomla: caching of files'] = '';
config['location ~* \\.(js|css|png|jpg|jpeg|gif|swf|xml|txt)$'] = {
expires: '14d',
};
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/letsencrypt.conf.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default (global) => {
const config = {};
config['# ACME-challenge'] = '';
config['location ^~ /.well-known/acme-challenge/'] = {
root: global.https.letsEncryptRoot.computed.replace(/\/+$/, ''),
};
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/magento.conf.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default () => {
const config = {};
config['# Magento: setup'] = '';
config['location ^~ /setup'] = {
root: '$base',
'# allow index.php': '',
'location ~ ^/setup/index.php': {
include: 'nginxconfig.io/php_fastcgi.conf',
},
'# deny everything except pub': '',
'location ~ ^/setup/(?!pub/).': {
deny: 'all',
},
};
config['# Magento: update'] = '';
config['location ^~ /update'] = {
root: '$base',
'# allow index.php': '',
'location ~ ^/update/index.php': {
include: 'nginxconfig.io/php_fastcgi.conf',
},
'# deny everything except pub': '',
'location ~ ^/update/(?!pub/).': {
deny: 'all',
},
};
config['# Magento: media files'] = '';
config['location ^~ /media/'] = {
try_files: '$uri $uri/ /get.php?$args',
'location ~* \\.(?:ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$': {
expires: '+1y',
add_header: 'Cache-Control "public"',
try_files: '$uri $uri/ /get.php?$args',
},
'location ~* \\.(?:zip|gz|gzip|bz2|csv|xml)$': {
expires: 'off',
add_header: 'Cache-Control "no-store"',
try_files: '$uri $uri/ /get.php?$args',
},
'location ~ ^/media/theme_customization/.*\\.xml': {
deny: 'all',
},
'location ~ ^/media/(?:customer|downloadable|import)/': {
deny: 'all',
},
};
config['# Magento: static route'] = '';
config['location @magento_static'] = {
rewrite: '^/static/(version\\d*/)?(.*)$ /static.php?resource=$2 last',
};
config['# Magento: static files'] = '';
config['location ^~ /static/'] = {
expires: 'max',
try_files: '$uri $uri/ @magento_static',
'location ~* \\.(ico|jpg|jpeg|png|gif|svg|js|css|swf|eot|ttf|otf|woff|woff2)$': {
expires: '+1y',
add_header: 'Cache-Control "public"',
try_files: '$uri $uri/ magento_static',
},
'location ~* .(zip|gz|gzip|bz2|csv|xml)$': {
expires: 'off',
add_header: 'Cache-Control "no-store"',
try_files: '$uri $uri/ @magento_static',
},
};
config['# Magento: deny cron'] = '';
config['location ~ cron\\.php'] = {
deny: 'all',
};
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/nginx.conf.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import { errorLogPathDisabled } from '../../util/logging.js';
import sslProfiles from '../../util/ssl_profiles.js';
import websiteConf from './website.conf.js';
export default (domains, global) => {
const config = {};
// Source
config['# Generated by nginxconfig.io'] = '';
config['# See nginxconfig.txt for the configuration share link'] = '';
// Basic nginx conf
config.user = global.nginx.user.computed;
if (global.nginx.pid.computed) config.pid = global.nginx.pid.computed;
config.worker_processes = global.nginx.workerProcesses.computed;
config.worker_rlimit_nofile = 65535;
// Modules
config['# Load modules'] = '';
config.include = `${global.nginx.nginxConfigDirectory.computed.replace(
/\/+$/,
'',
)}/modules-enabled/*.conf`;
// Events
config.events = {
multi_accept: 'on',
worker_connections: 65535,
};
// HTTP (kv so we can use the same key multiple times)
config.http = [];
config.http.push(['charset', 'utf-8']);
config.http.push(['sendfile', 'on']);
config.http.push(['tcp_nopush', 'on']);
config.http.push(['tcp_nodelay', 'on']);
if (!global.security.serverTokens.computed) config.http.push(['server_tokens', 'off']);
if (!global.logging.logNotFound.computed) config.http.push(['log_not_found', 'off']);
config.http.push(['types_hash_max_size', global.nginx.typesHashMaxSize.computed]);
config.http.push(['types_hash_bucket_size', global.nginx.typesHashBucketSize.computed]);
config.http.push(['client_max_body_size', `${global.nginx.clientMaxBodySize.computed}M`]);
config.http.push(['# MIME', '']);
config.http.push(['include', 'mime.types']);
config.http.push(['default_type', 'application/octet-stream']);
// Append Cloudflare request headers to the default log format
if (global.logging.cloudflare.computed) {
config.http.push(['# Log Format', '']);
// Define default log format as an array
let logging = [
'$remote_addr',
'-',
'$remote_user',
'[$time_local]',
'"$request"',
'$status',
'$body_bytes_sent',
'"$http_referer"',
'"$http_user_agent"',
];
if (global.logging.cfRay.computed) logging.push('$http_cf_ray');
if (global.logging.cfConnectingIp.computed) logging.push('$http_cf_connecting_ip');
if (global.logging.xForwardedFor.computed) logging.push('$http_x_forwarded_for');
if (global.logging.xForwardedProto.computed) logging.push('$http_x_forwarded_proto');
if (global.logging.trueClientIp.computed) logging.push('$http_true_client_ip');
if (global.logging.cfIpCountry.computed) logging.push('$http_cf_ipcountry');
if (global.logging.cfVisitor.computed) logging.push('$http_cf_visitor');
if (global.logging.cdnLoop.computed) logging.push('$http_cdn_loop');
config.http.push(['log_format', `cloudflare '${logging.join(' ')}'`]);
}
config.http.push(['# Logging', '']);
config.http.push(['access_log', 'off']);
if (global.logging.errorLogEnabled.computed) {
config.http.push([
'error_log',
global.logging.errorLogPath.computed.trim() +
` ${global.logging.errorLogLevel.computed}`,
]);
} else {
config.http.push(['error_log', errorLogPathDisabled]);
}
if (global.security.limitReq.computed) {
config.http.push(['# Limits', '']);
config.http.push(['limit_req_log_level', 'warn']);
config.http.push(['limit_req_zone', '$binary_remote_addr zone=login:10m rate=10r/m']);
}
// HTTPS
let hasHttps = false;
for (const domain of domains) {
if (domain && domain.https && domain.https.https && domain.https.https.computed) {
hasHttps = true;
break;
}
}
if (hasHttps) {
config.http.push(['# SSL', '']);
config.http.push(['ssl_session_timeout', '1d']);
config.http.push(['ssl_session_cache', 'shared:SSL:10m']);
config.http.push(['ssl_session_tickets', 'off']);
const sslProfile = sslProfiles[global.https.sslProfile.computed];
if (sslProfile) {
if (sslProfile.dh_param_size) {
config.http.push(['# Diffie-Hellman parameter for DHE ciphersuites', '']);
config.http.push([
'ssl_dhparam',
`${global.nginx.nginxConfigDirectory.computed.replace(/\/+$/, '')}/dhparam.pem`,
]);
}
config.http.push([`# ${sslProfile.name} configuration`, '']);
config.http.push(['ssl_protocols', sslProfile.protocols.join(' ')]);
if (sslProfile.ciphers.length)
config.http.push(['ssl_ciphers', sslProfile.ciphers.join(':')]);
if (sslProfile.server_preferred_order)
config.http.push(['ssl_prefer_server_ciphers', 'on']);
}
config.http.push(['# OCSP Stapling', '']);
config.http.push(['ssl_stapling', 'on']);
config.http.push(['ssl_stapling_verify', 'on']);
const ips = [];
if (global.https.ocspCloudflare.computed) {
if (['ipv4', 'both'].includes(global.https.ocspCloudflareType.computed))
ips.push('1.1.1.1', '1.0.0.1');
if (['ipv6', 'both'].includes(global.https.ocspCloudflareType.computed))
ips.push('[2606:4700:4700::1111]', '[2606:4700:4700::1001]');
}
if (global.https.ocspGoogle.computed) {
if (['ipv4', 'both'].includes(global.https.ocspGoogleType.computed))
ips.push('8.8.8.8', '8.8.4.4');
if (['ipv6', 'both'].includes(global.https.ocspGoogleType.computed))
ips.push('[2001:4860:4860::8888]', '[2001:4860:4860::8844]');
}
if (global.https.ocspOpenDns.computed) {
if (['ipv4', 'both'].includes(global.https.ocspOpenDnsType.computed))
ips.push('208.67.222.222', '208.67.220.220');
if (['ipv6', 'both'].includes(global.https.ocspOpenDnsType.computed))
ips.push('[2620:119:35::35]', '[2620:119:53::53]');
}
if (global.https.ocspQuad9.computed) {
if (['ipv4', 'both'].includes(global.https.ocspQuad9Type.computed))
ips.push('9.9.9.9', '149.112.112.112');
if (['ipv6', 'both'].includes(global.https.ocspQuad9Type.computed))
ips.push('[2620:fe::fe]', '[2620:fe::9]');
}
if (global.https.ocspVerisign.computed) {
if (['ipv4', 'both'].includes(global.https.ocspVerisignType.computed))
ips.push('64.6.64.6', '64.6.65.6');
if (['ipv6', 'both'].includes(global.https.ocspVerisignType.computed))
ips.push('[2620:74:1b::1:1]', '[2620:74:1c::2:2]');
}
if (ips.length) {
config.http.push(['resolver', `${ips.join(' ')} valid=60s`]);
config.http.push(['resolver_timeout', '2s']);
}
}
// Connection header for WebSocket reverse proxy
if (domains.some((d) => d.reverseProxy.reverseProxy.computed)) {
config.http.push(['# Connection header for WebSocket reverse proxy', '']);
config.http.push([
'map $http_upgrade $connection_upgrade',
{
default: 'upgrade',
'""': 'close',
},
]);
// See https://www.nginx.com/resources/wiki/start/topics/examples/forwarded/
config.http.push([
'map $remote_addr $proxy_forwarded_elem',
{
'# IPv4 addresses can be sent as-is': '',
'~^[0-9.]+$': '"for=$remote_addr"',
'# IPv6 addresses need to be bracketed and quoted': '',
'~^[0-9A-Fa-f:.]+$': '"for=\\"[$remote_addr]\\""',
'# Unix domain socket names cannot be represented in RFC 7239 syntax': '',
default: '"for=unknown"',
},
]);
config.http.push([
'map $http_forwarded $proxy_add_forwarded',
{
'# If the incoming Forwarded header is syntactically valid, append to it': '',
'': '"~^(,[ \\\\t]*)*([!#$%&\'*+.^_`|~0-9A-Za-z-]+=([!#$%&\'*+.^_`|~0-9A-Za-z-]+|\\"([\\\\t \\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E\\\\x80-\\\\xFF]|\\\\\\\\[\\\\t \\\\x21-\\\\x7E\\\\x80-\\\\xFF])*\\"))?(;([!#$%&\'*+.^_`|~0-9A-Za-z-]+=([!#$%&\'*+.^_`|~0-9A-Za-z-]+|\\"([\\\\t \\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E\\\\x80-\\\\xFF]|\\\\\\\\[\\\\t \\\\x21-\\\\x7E\\\\x80-\\\\xFF])*\\"))?)*([ \\\\t]*,([ \\\\t]*([!#$%&\'*+.^_`|~0-9A-Za-z-]+=([!#$%&\'*+.^_`|~0-9A-Za-z-]+|\\"([\\\\t \\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E\\\\x80-\\\\xFF]|\\\\\\\\[\\\\t \\\\x21-\\\\x7E\\\\x80-\\\\xFF])*\\"))?(;([!#$%&\'*+.^_`|~0-9A-Za-z-]+=([!#$%&\'*+.^_`|~0-9A-Za-z-]+|\\"([\\\\t \\\\x21\\\\x23-\\\\x5B\\\\x5D-\\\\x7E\\\\x80-\\\\xFF]|\\\\\\\\[\\\\t \\\\x21-\\\\x7E\\\\x80-\\\\xFF])*\\"))?)*)?)*$" "$http_forwarded, $proxy_forwarded_elem"',
'# Otherwise, replace it': '',
default: '"$proxy_forwarded_elem"',
},
]);
}
// Configs!
config.http.push(['# Load configs', '']);
config.http.push([
'include',
[
`${global.nginx.nginxConfigDirectory.computed.replace(/\/+$/, '')}/conf.d/*.conf`,
global.tools.modularizedStructure.computed
? `${global.nginx.nginxConfigDirectory.computed.replace(
/\/+$/,
'',
)}/sites-enabled/*`
: '',
].filter((x) => x.length),
]);
// Single file configs
if (!global.tools.modularizedStructure.computed) {
const ipPortPairs = new Set();
for (const domain of domains) {
config.http.push([`# ${domain.server.domain.computed}`, '']);
config.http.push(...websiteConf(domain, domains, global, ipPortPairs));
}
}
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/php_fastcgi.conf.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default (domains) => {
const legacyRouting = domains.some((d) => d.routing.legacyPhpRouting.computed);
const config = {};
if (legacyRouting) {
config['# split path'] = '';
config.fastcgi_split_path_info = '^(.+\\.php)(/.+)$';
config.set = '$_fastcgi_path_info $fastcgi_path_info';
}
config['# 404'] = '';
config.try_files = '$fastcgi_script_name =404';
config['# default fastcgi_params'] = '';
config.include = 'fastcgi_params';
config['# fastcgi settings'] = '';
config.fastcgi_index = 'index.php';
config.fastcgi_buffers = '8 16k';
config.fastcgi_buffer_size = '32k';
config['# fastcgi params'] = '';
config['fastcgi_param DOCUMENT_ROOT'] = '$realpath_root';
config['fastcgi_param SCRIPT_FILENAME'] = '$realpath_root$fastcgi_script_name';
if (legacyRouting) config['fastcgi_param PATH_INFO'] = '$_fastcgi_path_info';
config['fastcgi_param PHP_ADMIN_VALUE'] = '"open_basedir=$base/:/usr/lib/php/:/tmp/"';
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/proxy.conf.js
================================================
/*
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default (global) => {
const config = {};
config.proxy_http_version = '1.1';
config.proxy_cache_bypass = '$http_upgrade';
config['# Proxy SSL'] = '';
config['proxy_ssl_server_name'] = 'on';
config['# Proxy headers'] = '';
config['proxy_set_header Upgrade'] = '$http_upgrade';
config['proxy_set_header Connection'] = '$connection_upgrade';
config['proxy_set_header X-Real-IP'] = '$remote_addr';
config['proxy_set_header Forwarded'] = '$proxy_add_forwarded';
if (global.reverseProxy.proxyCoexistenceXForwarded.computed == 'passOn') {
config['proxy_set_header X-Forwarded-For'] = '$proxy_add_x_forwarded_for';
config['proxy_set_header X-Forwarded-Proto'] = '$scheme';
config['proxy_set_header X-Forwarded-Host'] = '$host';
config['proxy_set_header X-Forwarded-Port'] = '$server_port';
} else {
config['proxy_set_header X-Forwarded-For'] = '""';
config['proxy_set_header X-Forwarded-Proto'] = '""';
config['proxy_set_header X-Forwarded-Host'] = '""';
config['proxy_set_header X-Forwarded-Port'] = '""';
}
config['# Proxy timeouts'] = '';
config['proxy_connect_timeout'] = global.reverseProxy.proxyConnectTimeout.computed;
config['proxy_send_timeout'] = global.reverseProxy.proxySendTimeout.computed;
config['proxy_read_timeout'] = global.reverseProxy.proxyReadTimeout.computed;
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/python_uwsgi.conf.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default (global) => {
const config = {};
config['# default uwsgi_params'] = '';
config.include = 'uwsgi_params';
config['# uwsgi settings'] = '';
config.uwsgi_pass =
(global.python.pythonServer.computed[0] === '/' ? 'unix:' : '') +
global.python.pythonServer.computed;
config['uwsgi_param Host'] = '$host';
config['uwsgi_param X-Real-IP'] = '$remote_addr';
config['uwsgi_param X-Forwarded-For'] = '$proxy_add_x_forwarded_for';
config['uwsgi_param X-Forwarded-Proto'] = '$http_x_forwarded_proto';
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/security.conf.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import commonHsts from '../../util/common_hsts.js';
export default (domains, global) => {
const config = [];
config.push(['# security headers', '']);
config.push(['add_header X-XSS-Protection', '"1; mode=block" always']);
config.push(['add_header X-Content-Type-Options', '"nosniff" always']);
config.push([
'add_header Referrer-Policy',
`"${global.security.referrerPolicy.computed}" always`,
]);
if (global.security.contentSecurityPolicy.computed)
config.push([
'add_header Content-Security-Policy',
`"${global.security.contentSecurityPolicy.computed}" always`,
]);
if (global.security.permissionsPolicy.computed)
config.push([
'add_header Permissions-Policy',
`"${global.security.permissionsPolicy.computed}" always`,
]);
// Every domain has HSTS enabled, and they all have same hstsSubdomains/hstsPreload settings
if (commonHsts(domains)) {
const commonHSTSSubdomains = domains.length && domains[0].https.hstsSubdomains.computed;
const commonHSTSPreload = domains.length && domains[0].https.hstsPreload.computed;
config.push([
'add_header Strict-Transport-Security',
`"max-age=31536000${commonHSTSSubdomains ? '; includeSubDomains' : ''}${
commonHSTSPreload ? '; preload' : ''
}" always`,
]);
}
config.push(['# . files', '']);
config.push([
'location ~ /\\.(?!well-known)',
{
deny: 'all',
},
]);
// Security.txt
if (global.security.securityTxt.computed) {
config.push(['# security.txt', '']);
config.push([
'location /security.txt',
{
return: '301 /.well-known/security.txt',
},
]);
// Custom security.txt path
config.push([
'location = /.well-known/security.txt',
{
alias: `${global.security.securityTxtPath.value}`,
},
]);
}
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/website.conf.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import { getSslCertificate, getSslCertificateKey } from '../../util/get_ssl_certificate.js';
import { extensions, gzipTypes } from '../../util/types_extensions.js';
import { getDomainAccessLog, getDomainErrorLog } from '../../util/logging.js';
import commonHsts from '../../util/common_hsts.js';
import securityConf from './security.conf.js';
import pythonConf from './python_uwsgi.conf.js';
import proxyConf from './proxy.conf.js';
import phpConf from './php_fastcgi.conf.js';
import generalConf from './general.conf.js';
import wordPressConf from './wordpress.conf.js';
import drupalConf from './drupal.conf.js';
import magentoConf from './magento.conf.js';
import joomlaConf from './joomla.conf.js';
import letsEncryptConf from './letsencrypt.conf.js';
import phpPath from '../../util/php_path.js';
import phpUpstream from '../../util/php_upstream.js';
const sslConfig = (domain, global) => {
const config = [];
if (domain.https.https.computed) {
config.push(['# SSL', '']);
config.push(['ssl_certificate', getSslCertificate(domain, global)]);
config.push(['ssl_certificate_key', getSslCertificateKey(domain, global)]);
// Let's encrypt
if (domain.https.certType.computed === 'letsEncrypt')
config.push([
'ssl_trusted_certificate',
`${global.https.letsEncryptCertRoot.computed.replace(/\/+$/, '')}/${
domain.server.domain.computed
}/chain.pem`,
]);
}
return config;
};
const httpsListen = (domain, global, ipPortPairs) => {
const config = [];
// Check if reuseport needs to be set
const ipPortV4 = `${
domain.server.listenIpv4.computed === '*' ? '' : `${domain.server.listenIpv4.computed}:`
}443`;
const reusePortV4 = global.https.portReuse.computed && !ipPortPairs.has(ipPortV4);
if (reusePortV4) ipPortPairs.add(ipPortV4);
// HTTPS
config.push([
'listen',
`${ipPortV4} ssl${domain.https.http2.computed ? ' http2' : ''}${
reusePortV4 ? ' reuseport' : ''
}`,
]);
// HTTP/3
if (domain.https.http3.computed) config.push(['listen', `${ipPortV4} http3`]);
// v6
if (domain.server.listenIpv6.computed) {
// Check if reuseport needs to be set
const ipPortV6 = `[${domain.server.listenIpv6.computed}]:443`;
const reusePortV6 = global.https.portReuse.computed && !ipPortPairs.has(ipPortV6);
if (reusePortV6) ipPortPairs.add(ipPortV6);
// HTTPS
config.push([
'listen',
`${ipPortV6} ssl${domain.https.http2.computed ? ' http2' : ''}${
reusePortV6 ? ' reuseport' : ''
}`,
]);
// HTTP/3
if (domain.https.http3.computed) config.push(['listen', `${ipPortV6} http3`]);
}
return config;
};
const httpListen = (domain, global, ipPortPairs) => {
const config = [];
// Check if reuseport needs to be set
const ipPortV4 = `${
domain.server.listenIpv4.computed === '*' ? '' : `${domain.server.listenIpv4.computed}:`
}80`;
const reusePortV4 = global.https.portReuse.computed && !ipPortPairs.has(ipPortV4);
if (reusePortV4) ipPortPairs.add(ipPortV4);
// v4
config.push(['listen', `${ipPortV4}${reusePortV4 ? ' reuseport' : ''}`]);
// v6
if (domain.server.listenIpv6.computed) {
// Check if reuseport needs to be set
const ipPortV6 = `[${domain.server.listenIpv6.computed}]:80`;
const reusePortV6 = global.https.portReuse.computed && !ipPortPairs.has(ipPortV6);
if (reusePortV6) ipPortPairs.add(ipPortV6);
config.push(['listen', `${ipPortV6}${reusePortV6 ? ' reuseport' : ''}`]);
}
return config;
};
const listenConfig = (domain, global, ipPortPairs) => {
if (domain.https.https.computed) return httpsListen(domain, global, ipPortPairs);
return httpListen(domain, global, ipPortPairs);
};
const httpRedirectConfig = (domain, global, ipPortPairs, domainName, redirectDomain) => {
// Build the server config on its own before adding it to the parent config
const config = [];
config.push(...httpListen(domain, global, ipPortPairs));
config.push(['server_name', domainName]);
// Logging
if (domain.logging.redirectAccessLog.computed || domain.logging.redirectErrorLog.computed) {
config.push(['# logging', '']);
if (domain.logging.redirectAccessLog.computed) {
config.push(['access_log', getDomainAccessLog(domain, global)]);
}
if (domain.logging.redirectErrorLog.computed) {
config.push(['error_log', getDomainErrorLog(domain)]);
}
}
if (domain.https.certType.computed === 'letsEncrypt') {
// Let's encrypt
if (global.tools.modularizedStructure.computed) {
// Modularized
config.push(['include', 'nginxconfig.io/letsencrypt.conf']);
} else {
// Unified
config.push(...Object.entries(letsEncryptConf(global)));
}
config.push([
'location /',
{
return: `301 https://${redirectDomain ? redirectDomain : domainName}$request_uri`,
},
]);
} else {
// Custom cert
config.push([
'return',
`301 https://${redirectDomain ? redirectDomain : domainName}$request_uri`,
]);
}
return config;
};
export default (domain, domains, global, ipPortPairs) => {
// Use kv so we can use the same key multiple times
const config = [];
// Build the server config on its own before adding it to the parent config
const serverConfig = [];
// Not HTTPS or not force HTTPS
if (!domain.https.https.computed || !domain.https.forceHttps.computed)
serverConfig.push(...httpListen(domain, global, ipPortPairs));
// HTTPS
if (domain.https.https.computed) serverConfig.push(...httpsListen(domain, global, ipPortPairs));
serverConfig.push([
'server_name',
`${domain.server.wwwSubdomain.computed ? 'www.' : ''}${domain.server.domain.computed}`,
]);
// PHP or Django
if (
domain.php.php.computed ||
(domain.python.python.computed && domain.python.djangoRules.computed)
) {
serverConfig.push(['set', `$base ${domain.server.path.computed}`]);
// root
if (domain.routing.root.computed)
serverConfig.push(['root', `$base${domain.server.documentRoot.computed}`]);
}
// Not PHP and not Django and root
if (
!domain.php.php.computed &&
(!domain.python.python.computed || !domain.python.djangoRules.computed) &&
domain.routing.root.computed
)
serverConfig.push([
'root',
`${domain.server.path.computed}${domain.server.documentRoot.computed}`,
]);
// HTTPS
serverConfig.push(...sslConfig(domain, global));
// Onion location
if (domain.onion.onionLocation.computed) {
serverConfig.push(['# Onion services', '']);
serverConfig.push([
'add_header Onion-Location',
`http://${domain.onion.onionLocation.computed}$request_uri`,
]);
}
// HSTS
if (!commonHsts(domains) && domain.https.hsts.computed) {
serverConfig.push(['# HSTS', '']);
serverConfig.push([
'add_header Strict-Transport-Security',
`"max-age=31536000${domain.https.hstsSubdomains.computed ? '; includeSubDomains' : ''}${
domain.https.hstsPreload.computed ? '; preload' : ''
}" always`,
]);
}
// Security
if (global.tools.modularizedStructure.computed) {
// Modularized
serverConfig.push(['# security', '']);
serverConfig.push(['include', 'nginxconfig.io/security.conf']);
} else {
// Unified
serverConfig.push(...securityConf(domains, global));
}
// Restrict Methods
if (
Object.keys(domain.restrict).find(
(k) => domain.restrict[k].computed && k !== 'responseCode',
)
) {
const allowedKeys = Object.keys(domain.restrict)
.filter((k) => !domain.restrict[k].computed && k !== 'responseCode')
.map((e) => e.replace('Method', '').toUpperCase());
serverConfig.push(['# restrict methods', '']);
serverConfig.push([
`if ($request_method !~ ^(${allowedKeys.join('|')})$)`,
{
return: `'${domain.restrict.responseCode.computed}'`,
},
]);
}
// Access log or error log for domain
if (domain.logging.accessLogEnabled.computed || domain.logging.errorLogEnabled.computed) {
serverConfig.push(['# logging', '']);
if (domain.logging.accessLogEnabled.computed)
serverConfig.push(['access_log', getDomainAccessLog(domain, global)]);
if (domain.logging.errorLogEnabled.computed)
serverConfig.push(['error_log', getDomainErrorLog(domain)]);
}
// index.php
if (domain.routing.index.computed === 'index.php') {
serverConfig.push(['# index.php', '']);
serverConfig.push(['index', 'index.php']);
}
// Fallback index.html or index.php
if (
(domain.routing.fallbackHtml.computed || domain.routing.fallbackPhp.computed) &&
(!domain.reverseProxy.reverseProxy.computed || domain.reverseProxy.path.computed !== '/')
) {
serverConfig.push([
`# index.${
domain.routing.fallbackHtml.computed
? 'html'
: domain.routing.fallbackPhp.computed
? 'php'
: ''
} fallback`,
'',
]);
serverConfig.push([
'location /',
{
try_files: `$uri $uri/ /index.${
domain.routing.fallbackHtml.computed
? 'html'
: domain.routing.fallbackPhp.computed
? 'php?$query_string'
: ''
}`,
},
]);
}
// Fallback index.html and index.php
if (domain.routing.fallbackHtml.computed && domain.routing.fallbackPhp.computed) {
serverConfig.push(['# index.php fallback', '']);
serverConfig.push([
`location ~ ^${domain.routing.fallbackPhpPath.computed}`,
{
try_files: '$uri $uri/ /index.php?$query_string',
},
]);
}
// Python
if (domain.python.python.computed) {
if (global.tools.modularizedStructure.computed) {
// Modularized
serverConfig.push(['location /', { include: 'nginxconfig.io/python_uwsgi.conf' }]);
} else {
// Unified
serverConfig.push(['location /', pythonConf(global)]);
}
// Django
if (domain.python.djangoRules.computed) {
serverConfig.push(['# Django media', '']);
serverConfig.push(['location /media/', { alias: '$base/media/' }]);
serverConfig.push(['# Django static', '']);
serverConfig.push(['location /static/', { alias: '$base/static/' }]);
}
}
// Reverse proxy
if (domain.reverseProxy.reverseProxy.computed) {
const locConf = [];
locConf.push(['proxy_pass', domain.reverseProxy.proxyPass.computed]);
locConf.push(['proxy_set_header Host', domain.reverseProxy.proxyHostHeader.computed]);
if (global.tools.modularizedStructure.computed) {
// Modularized
locConf.push(['include', 'nginxconfig.io/proxy.conf']);
} else {
// Unified
locConf.push(...Object.entries(proxyConf(global)));
}
serverConfig.push(['# reverse proxy', '']);
serverConfig.push([`location ${domain.reverseProxy.path.computed}`, locConf]);
}
// Additional config
if (global.tools.modularizedStructure.computed) {
// Modularized
serverConfig.push(['# additional config', '']);
serverConfig.push(['include', 'nginxconfig.io/general.conf']);
if (!domain.https.forceHttps.computed && domain.https.certType.computed === 'letsEncrypt')
serverConfig.push(['include', 'nginxconfig.io/letsencrypt.conf']);
if (domain.php.wordPressRules.computed)
serverConfig.push([
'include',
`nginxconfig.io/${domain.server.domain.computed}.wordpress.conf`,
]);
if (domain.php.drupalRules.computed)
serverConfig.push(['include', 'nginxconfig.io/drupal.conf']);
if (domain.php.magentoRules.computed)
serverConfig.push(['include', 'nginxconfig.io/magento.conf']);
if (domain.php.joomlaRules.computed)
serverConfig.push(['include', 'nginxconfig.io/joomla.conf']);
} else {
// Unified
serverConfig.push(...Object.entries(generalConf(domains, global)));
if (!domain.https.forceHttps.computed && domain.https.certType.computed === 'letsEncrypt')
serverConfig.push(...Object.entries(letsEncryptConf(global)));
if (domain.php.wordPressRules.computed)
serverConfig.push(...Object.entries(wordPressConf(global, domain)));
if (domain.php.drupalRules.computed)
serverConfig.push(...Object.entries(drupalConf(global)));
if (domain.php.magentoRules.computed) serverConfig.push(...Object.entries(magentoConf()));
if (domain.php.joomlaRules.computed) serverConfig.push(...Object.entries(joomlaConf()));
}
// PHP
if (domain.php.php.computed) {
if (domain.php.phpBackupServer.computed) {
config.push([
`upstream ${phpUpstream(domain)}`,
{
server: [phpPath(domain), `${phpPath(domain, true)} backup`],
},
]);
}
serverConfig.push(['# handle .php', '']);
const loc = `location ~ ${
domain.routing.legacyPhpRouting.computed ? '[^/]\\.php(/|$)' : '\\.php$'
}`;
const fastcgiPass = {
fastcgi_pass:
domain.php.phpBackupServer.computed !== '' ? phpUpstream(domain) : phpPath(domain),
};
if (global.tools.modularizedStructure.computed || domain.php.wordPressRules.computed) {
// Modularized
serverConfig.push([
loc,
{
...fastcgiPass,
include: 'nginxconfig.io/php_fastcgi.conf',
},
]);
} else {
// Unified
serverConfig.push([
loc,
{
...fastcgiPass,
...phpConf(domains),
},
]);
}
}
// Add the server config to the parent config now its built
config.push(['server', serverConfig]);
// CDN!
if (domain.server.cdnSubdomain.computed) {
// Build the server config on its own before adding it to the parent config
const cdnConfig = [];
cdnConfig.push(...listenConfig(domain, global, ipPortPairs));
cdnConfig.push(['server_name', `cdn.${domain.server.domain.computed}`]);
cdnConfig.push([
'root',
`${domain.server.path.computed}${domain.server.documentRoot.computed}`,
]);
// HTTPS
cdnConfig.push(...sslConfig(domain, global));
cdnConfig.push(['# disable access_log', '']);
cdnConfig.push(['access_log', 'off']);
// Gzip
if (global.performance.gzipCompression.computed) {
cdnConfig.push(['# gzip', '']);
cdnConfig.push(['gzip', 'on']);
cdnConfig.push(['gzip_vary', 'on']);
cdnConfig.push(['gzip_proxied', 'any']);
cdnConfig.push(['gzip_comp_level', 6]);
cdnConfig.push(['gzip_types', gzipTypes]);
}
cdnConfig.push(['# allow safe files', '']);
cdnConfig.push([
`location ~* \\.(?:${extensions.assets}|${extensions.fonts}|${extensions.svg}|${extensions.images}|${extensions.audio}|${extensions.video}|${extensions.docs})$`,
[
['add_header', 'Access-Control-Allow-Origin "*"'],
['add_header', 'Cache-Control "public"'],
['expires', '30d'],
],
]);
cdnConfig.push(['# deny everything else', '']);
cdnConfig.push(['location /', { deny: 'all' }]);
// Add the CDN config to the parent config now its built
config.push(['# CDN', '']);
config.push(['server', cdnConfig]);
}
// Subdomains redirect
if (domain.server.redirectSubdomains.computed) {
// Build the server config on its own before adding it to the parent config
const redirectConfig = [];
redirectConfig.push(...listenConfig(domain, global, ipPortPairs));
redirectConfig.push([
'server_name',
`${domain.server.wwwSubdomain.computed ? '' : '*'}.${domain.server.domain.computed}`,
]);
// HTTPS
redirectConfig.push(...sslConfig(domain, global));
// Logging
if (domain.logging.redirectAccessLog.computed || domain.logging.redirectErrorLog.computed) {
redirectConfig.push(['# logging', '']);
if (domain.logging.redirectAccessLog.computed) {
redirectConfig.push(['access_log', getDomainAccessLog(domain, global)]);
}
if (domain.logging.redirectErrorLog.computed) {
redirectConfig.push(['error_log', getDomainErrorLog(domain)]);
}
}
redirectConfig.push([
'return',
`301 http${domain.https.https.computed ? 's' : ''}://${
domain.server.wwwSubdomain.computed ? 'www.' : ''
}${domain.server.domain.computed}$request_uri`,
]);
// Add the redirect config to the parent config now its built
config.push([
`# ${domain.server.wwwSubdomain.computed ? 'non-www, ' : ''}subdomains redirect`,
'',
]);
config.push(['server', redirectConfig]);
}
// HTTP redirect
if (domain.https.forceHttps.computed) {
// Add the redirect config to the parent config now its built
config.push(['# HTTP redirect', '']);
if (domain.server.wwwSubdomain.computed && !domain.server.redirectSubdomains.computed) {
config.push([
'server',
httpRedirectConfig(
domain,
global,
ipPortPairs,
domain.server.domain.computed,
`www.${domain.server.domain.computed}`,
),
]);
config.push([
'server',
httpRedirectConfig(
domain,
global,
ipPortPairs,
`www.${domain.server.domain.computed}`,
),
]);
} else if (
!domain.server.wwwSubdomain.computed &&
!domain.server.redirectSubdomains.computed
) {
config.push([
'server',
httpRedirectConfig(domain, global, ipPortPairs, domain.server.domain.computed),
]);
}
if (domain.server.cdnSubdomain.computed) {
config.push([
'server',
httpRedirectConfig(
domain,
global,
ipPortPairs,
`cdn.${domain.server.domain.computed}`,
),
]);
}
if (domain.server.redirectSubdomains.computed) {
config.push([
'server',
httpRedirectConfig(
domain,
global,
ipPortPairs,
`.${domain.server.domain.computed}`,
`${domain.server.wwwSubdomain.computed ? 'www.' : ''}${
domain.server.domain.computed
}`,
),
]);
}
}
return config;
};
================================================
FILE: src/nginxconfig/generators/conf/wordpress.conf.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import phpPath from '../../util/php_path.js';
import phpUpstream from '../../util/php_upstream.js';
export default (global, domain) => {
const config = {};
config['# WordPress: allow TinyMCE'] = '';
config['location = /wp-includes/js/tinymce/wp-tinymce.php'] = {
include: 'nginxconfig.io/php_fastcgi.conf',
};
config['# WordPress: deny wp-content, wp-includes php files'] = '';
config['location ~* ^/(?:wp-content|wp-includes)/.*\\.php$'] = {
deny: 'all',
};
config['# WordPress: deny wp-content/uploads nasty stuff'] = '';
config['location ~* ^/wp-content/uploads/.*\\.(?:s?html?|php|js|swf)$'] = {
deny: 'all',
};
config['# WordPress: SEO plugin'] = '';
config['location ~* ^/wp-content/plugins/wordpress-seo(?:-premium)?/css/main-sitemap\\.xsl$'] =
{};
config['# WordPress: deny wp-content/plugins (except earlier rules)'] = '';
config['location ~ ^/wp-content/plugins'] = {
deny: 'all',
};
config['# WordPress: deny general stuff'] = '';
config[
'location ~* ^/(?:xmlrpc\\.php|wp-links-opml\\.php|wp-config\\.php|wp-config-sample\\.php|readme\\.html|license\\.txt)$'
] = {
deny: 'all',
};
if (global.security.limitReq.computed) {
config['# WordPress: throttle wp-login.php'] = '';
config['location = /wp-login.php'] = {
limit_req: 'zone=login burst=2 nodelay',
include: 'nginxconfig.io/php_fastcgi.conf',
};
if (domain.php.wordPressRules.computed) {
config['location = /wp-login.php'].fastcgi_pass =
domain.php.phpBackupServer.computed !== '' ? phpUpstream(domain) : phpPath(domain);
}
}
// Done!
return config;
};
================================================
FILE: src/nginxconfig/generators/ext/docker.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default () => {
return 'FROM nginx:latest\nCOPY . /etc/nginx/';
};
================================================
FILE: src/nginxconfig/generators/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import toConf from './to_conf.js';
import toYaml from './to_yaml.js';
import nginxConf from './conf/nginx.conf.js';
import websiteConf from './conf/website.conf.js';
import letsEncryptConf from './conf/letsencrypt.conf.js';
import securityConf from './conf/security.conf.js';
import generalConf from './conf/general.conf.js';
import phpConf from './conf/php_fastcgi.conf.js';
import pythonConf from './conf/python_uwsgi.conf.js';
import proxyConf from './conf/proxy.conf.js';
import wordPressConf from './conf/wordpress.conf.js';
import drupalConf from './conf/drupal.conf.js';
import magentoConf from './conf/magento.conf.js';
import joomlaConf from './conf/joomla.conf.js';
import dockerComposeYaml from './yaml/dockerCompose.yaml.js';
import dockerConf from './ext/docker.js';
import shareQuery from '../util/share_query.js';
export default (domains, global) => {
const files = {};
// Base nginx config
files['nginx.conf'] = toConf(nginxConf(domains, global));
// Dockerfile
if (global.docker.dockerfile.computed) files['Dockerfile'] = dockerConf();
if (global.docker.dockerCompose.computed)
files['docker-compose.yaml'] = toYaml(dockerComposeYaml());
// Modularised configs
if (global.tools.modularizedStructure.computed) {
// Domain config
const sitesDir = `sites-${global.tools.symlinkVhost.computed ? 'available' : 'enabled'}`;
const ipPortPairs = new Set();
for (const domain of domains) {
files[`${sitesDir}/${domain.server.domain.computed}.conf`] = toConf(
websiteConf(domain, domains, global, ipPortPairs),
);
// WordPress
if (domains.some((d) => d.php.wordPressRules.computed))
files[`nginxconfig.io/${domain.server.domain.computed}.wordpress.conf`] = toConf(
wordPressConf(global, domain),
);
}
// Let's encrypt
if (domains.some((d) => d.https.certType.computed === 'letsEncrypt'))
files['nginxconfig.io/letsencrypt.conf'] = toConf(letsEncryptConf(global));
// Security
files['nginxconfig.io/security.conf'] = toConf(securityConf(domains, global));
// General
files['nginxconfig.io/general.conf'] = toConf(generalConf(domains, global));
// PHP
if (domains.some((d) => d.php.php.computed))
files['nginxconfig.io/php_fastcgi.conf'] = toConf(phpConf(domains));
// Python
if (domains.some((d) => d.python.python.computed))
files['nginxconfig.io/python_uwsgi.conf'] = toConf(pythonConf(global));
// Reverse proxy
if (domains.some((d) => d.reverseProxy.reverseProxy.computed))
files['nginxconfig.io/proxy.conf'] = toConf(proxyConf(global));
// Drupal
if (domains.some((d) => d.php.drupalRules.computed))
files['nginxconfig.io/drupal.conf'] = toConf(drupalConf(global));
// Magento
if (domains.some((d) => d.php.magentoRules.computed))
files['nginxconfig.io/magento.conf'] = toConf(magentoConf());
// Joomla
if (domains.some((d) => d.php.joomlaRules.computed))
files['nginxconfig.io/joomla.conf'] = toConf(joomlaConf());
} else {
// PHP
if (domains.some((d) => d.php.wordPressRules.computed))
files['nginxconfig.io/php_fastcgi.conf'] = toConf(phpConf(domains));
}
const query = shareQuery(
domains.map((domain, index) => [domain, index]).filter((d) => d[0] !== null),
global,
);
files['nginxconfig.txt'] =
`${window.location.protocol}//${window.location.host}${window.location.pathname}${query}`;
return files;
};
================================================
FILE: src/nginxconfig/generators/to_conf.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import isObject from '../util/is_object.js';
const isBlock = (item) => {
// If an object, or kv entries, this is considered a block
return (
isObject(item) ||
(Array.isArray(item) && item.every((i) => Array.isArray(i) && i.length === 2))
);
};
const longestKey = (items) => {
let longest = 0;
for (const item of items) {
// Only consider up to the first block
if (isBlock(item[1])) return longest;
// If this is the new longest, and not a comment, use this
if (item[0].length > longest && !item[0].startsWith('#')) longest = item[0].length;
}
// Done!
return longest;
};
const recurse = (entriesOrObject, depth) => {
// Support an object or kv array entries
// Convert to entries if given an object
const entries = isObject(entriesOrObject) ? Object.entries(entriesOrObject) : entriesOrObject;
// If not a valid kv entries array, return
if (!Array.isArray(entries) || !entries.every((i) => Array.isArray(i) && i.length === 2))
return '';
// Initial values
let retVal = '';
let longestKeyLen = longestKey(entries);
const indent = ' '.repeat(depth);
// Track whether the previous was a block, for indentation
let previousBlock = false;
// Loop over every kv pair
for (let i = 0; i < entries.length; i++) {
const item = entries[i];
// If a block (object or kv entries), recurse
if (isBlock(item[1])) {
// Recurse
retVal += '\n' + indent + item[0] + ' {\n';
retVal += recurse(item[1], depth + 1);
retVal += indent + '}\n\n';
// Done
previousBlock = true;
continue;
}
// Update key length if we've just left a block
if (previousBlock) {
longestKeyLen = longestKey(entries.slice(i));
previousBlock = false;
}
// Otherwise, assume it can be made a string
// Ensure we're working with an array
const val = Array.isArray(item[1]) ? item[1] : [item[1]];
// Calculate spacing
const keyValSpacing = longestKeyLen - item[0].length + 1;
const keyValIndent = ' '.repeat(Math.max(keyValSpacing, 0));
// Work through each item in the array
val.forEach((subVal) => {
const val = subVal.toString();
retVal +=
indent +
(item[0] + keyValIndent + val).trim() +
(item[0].startsWith('#') ? '' : ';') +
'\n';
});
}
return retVal;
};
export default (entriesOrObject) => {
// Generate the conf
let conf = recurse(entriesOrObject, 0);
// Do some regex cleanup
conf = conf
// Cleanup triple linebreaks
.replace(/\n\n\n/g, '\n\n')
// Double linebreak before comment
.replace(/^([^\S\r\n]*[^#\s].*[^\n])\n([^\S\r\n]*)#/gm, '$1\n\n$2#')
// Single linebreak between comment and block
.replace(/^([^\S\r\n]*#.*)(?:\n[^\S\r\n]*)+\n([^\S\r\n]*.*{)/gm, '$1\n$2')
// Double linebreak after double comment
.replace(/^([^\S\r\n]*#.*\n[^\S\r\n]*#.*\n)([^\S\r\n]*[^#\s])/gm, '$1\n$2')
// No newline for empty blocks
.replace(/^([^\S\r\n]*.*{)\n[^\S\r\n]*(})/gm, '$1$2');
// Cleanup extra linebreaks between multiple close blocks
// Use a loop as this has overlapping matches
let match;
do {
match = /^([^\S\r\n]*})(?:\n[^\S\r\n]*)+\n([^\S\r\n]*})/m.exec(conf);
if (match)
conf =
conf.slice(0, match.index) +
match[1] +
'\n' +
match[2] +
conf.slice(match.index + match[0].length);
} while (match);
// Remove initial & trailing whitespace
return conf.trim();
};
================================================
FILE: src/nginxconfig/generators/to_yaml.js
================================================
/*
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import yaml from 'json-to-pretty-yaml';
export default (yamlConf) => {
return yaml.stringify(yamlConf);
};
================================================
FILE: src/nginxconfig/generators/yaml/dockerCompose.yaml.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default () => {
return {
version: '3.3',
services: {
nginx: {
build: {
context: '.',
dockerfile: 'Dockerfile',
},
},
},
};
};
================================================
FILE: src/nginxconfig/i18n/de/common.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
back: 'Zurück',
next: 'Weiter',
enable: 'Aktiviere',
php: 'PHP',
ssl: 'SSL',
nginx: 'NGINX',
http: 'HTTP',
https: 'HTTPS',
letsEncrypt: "Let's Encrypt",
python: 'Python',
wordPress: 'WordPress',
drupal: 'Drupal',
magento: 'Magento',
joomla: 'Joomla',
django: 'Django',
logging: 'Logging',
reverseProxy: 'Reverse Proxy',
reverseProxyLower: 'reverse proxy',
restrict: 'Beschränkungen',
path: 'Pfad',
};
================================================
FILE: src/nginxconfig/i18n/de/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from './common.js';
import languages from './languages.js';
import templates from './templates/index.js';
export default { common, languages, templates };
================================================
FILE: src/nginxconfig/i18n/de/languages.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
en: 'Englisch',
es: 'Spanisch',
zhCN: 'Chinesisch (vereinfacht)',
zhTW: 'Chinesisch (traditionell)',
ptBR: 'Portugiesisch (Brasilien)',
fr: 'Französisch',
ru: 'Russisch',
pl: 'Polnisch',
de: 'Deutsch',
ja: 'Japanisch',
fa: 'Persisch',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/app.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../common.js';
export default {
title: `${common.nginx}Config`,
description: `Der einfachste Weg, einen performanten, sicheren und stabilen ${common.nginx} Server zu konfigurieren.`,
singleColumnMode: 'Einspaltiger Modus',
splitColumnMode: 'Mehrspaltiger Modus',
perWebsiteConfig: 'Webseiten-Konfiguration',
addSite: 'Webseite hinzufügen',
globalConfig: 'Globale Konfiguration',
setup: 'Setup',
configFiles: 'Konfigurationsdateien',
copied: 'kopiert',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/callouts/contribute.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
wantToContributeChanges:
'👋 Willst du neue Features vorschlagen, Änderungen beitragen oder das Tool in eine andere Sprache übersetzen?',
getInvolvedOnGitHub: 'Beteilige dich auf GitHub',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/callouts/droplet.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
lookingForAPlaceToDeploy: '👋 Suchst du nach einem Ort, deine neue Konfiguration zu deployen?',
tryOutDigitalOceansDroplet: "Teste DigitalOcean's LEMP Droplet mit NGINX",
};
================================================
FILE: src/nginxconfig/i18n/de/templates/callouts/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import droplet from './droplet.js';
import contribute from './contribute.js';
export default { droplet, contribute };
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/https.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
enableEncryptedSslConnection: `${common.enable} verschlüsselte ${common.ssl} Verbindungen`,
http2: `${common.http}/2`,
enableHttp2Connections: `${common.enable} ${common.http}/2 Verbindungen`,
http3: `${common.http}/3`,
enableHttp3Connections: `${common.enable} ${common.http}/3 Verbindungen`,
forceHttps: `Erzwinge ${common.https}`,
hsts: 'HSTS',
enableStrictTransportSecurity: `${common.enable} Strict Transport Security, was HTTPS Verbindungen erzwingt`,
enableIncludeSubDomains: `${common.enable} includeSubDomains Direktive, welche HTTPS Verbindungen auf ALLEN Subdomains erzwingt`,
enablePreload: `${common.enable} preload Direktive, welche Browsern mitteilt, ausschließlich HTTPS Verbindungen zu verwenden`,
certificationType: 'Zertifizierungsart',
customCertificate: 'Eigenes Zertifikat',
letsEncryptEmail: `${common.letsEncrypt} E-Mail`,
http3IsANonStandardModule: 'HTTP/3 ist kein Standard NGINX Modul. Besuche das ',
http3NginxQuicReadme: 'NGINX QUIC Readme',
http3OrThe: ' oder das ',
http3CloudflareQuicheProject: 'Cloudflare Quiche Project',
http3ForBuildingNginxWithHttp3: ' für Informationen, wie man NGINX mit HTTP/3 verwendet!',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import https from './https.js';
import logging from './logging.js';
import onion from './onion.js';
import php from './php.js';
import presets from './presets.js';
import python from './python.js';
import restrict from './restrict.js';
import reverseProxy from './reverse_proxy.js';
import routing from './routing.js';
import server from './server.js';
export default {
https,
logging,
php,
presets,
python,
reverseProxy,
routing,
server,
restrict,
onion,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/logging.js
================================================
/*
Copyright 2022 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
byDomain: 'der Domain',
enableForThisDomain: 'Für diese Domain aktivieren',
arguments: 'arguments', // TODO: translate
level: 'logging level', // TODO: translate
forRedirects: 'for redirects', // TODO: translate
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/onion.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
const onion = 'Onion';
export default {
onion,
onionLocation: `${onion} Location`,
provideAnOnionLocationToSetOnionLocationHeader:
'Gib eine Onion Adresse an, um den Onion-Location Header für deine Seite zu setzen.',
letsVisitorsKnownOnionServicesIsAvailable:
'Dies teilt deinen Besuchern mit, dass eine Onion-Version deiner Webseite für Tor-Browser verfügbar ist.',
learnMoreAboutOnionServices: 'Lerne mehr über Onion-Dienste',
onionLocationExpectedToEndWithOnion: 'Onion Adressen enden normalerweise mit `.onion`.',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/php.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
phpIsDisabled: `${common.php} ist deaktiviert.`,
phpCannotBeEnabledWithReverseProxy: `${common.php} kann nicht aktiviert werden, während ein Reverse Proxy aktiviert ist.`,
phpCannotBeEnabledWithPython: `${common.php} kann nicht aktiviert werden, während ${common.python} aktiviert ist.`,
enablePhp: `${common.enable} ${common.php}`,
wordPressRules: `${common.wordPress} Regeln`,
enableWordPressRules: `${common.enable} ${common.wordPress}-spezifische Regeln`,
drupalRules: `${common.drupal} Regeln`,
enableDrupalRules: `${common.enable} ${common.drupal}-spezifische Regeln`,
magentoRules: `${common.magento} Regeln`,
enableMagentoRules: `${common.enable} ${common.magento}-spezifische Regeln`,
joomlaRules: `${common.joomla} Regeln`,
enableJoomlaRules: `${common.enable} ${common.joomla}-spezifische Regeln`,
phpServer: `${common.php} Server`,
phpBackupServer: `${common.php} Backup Server`,
tcp: 'TCP',
hhvmSocket: 'HHVM Socket',
php70Socket: '7.0 Socket',
php71Socket: '7.1 Socket',
php72Socket: '7.2 Socket',
php73Socket: '7.3 Socket',
php74Socket: '7.4 Socket',
php80Socket: '8.0 Socket',
php81Socket: '8.1 Socket',
php82Socket: '8.2 Socket',
phpSocket: 'PHP Socket',
custom: 'Benutzerdefiniert',
disabled: 'Deaktiviert',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/presets.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
presets: 'Voreinstellungen',
itLooksLikeYouCustomisedTheConfig:
'Es sieht so aus, als hättest du die Konfiguration für diese Webseite angepasst. Eine neue Voreinstellung zu laden könnte manche deiner Anpassungen zurücksetzen oder ändern.',
frontend: 'Frontend',
nodeJs: 'Node.js',
singlePageApplication: 'Single-Page-Webanwendung',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/python.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
pythonIsDisabled: `${common.python} ist deaktiviert.`,
pythonCannotBeEnabledWithReverseProxy: `${common.python} kann nicht aktiviert werden, während ein Reverse Proxy aktiviert ist.`,
pythonCannotBeEnabledWithPhp: `${common.python} kann nicht aktiviert werden, während ${common.php} aktiviert ist.`,
enablePython: `${common.enable} ${common.python}`,
djangoRules: `${common.django} Regeln`,
enableDjangoRules: `${common.enable} ${common.django}-spezifische Regeln`,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/restrict.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
disableForThisDomain: 'Für diese Domain deaktivieren',
responseCode: 'HTTP Antwort-Code',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/reverse_proxy.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
reverseProxyIsDisabled: `${common.reverseProxy} ist deaktiviert.`,
reverseProxyCannotBeEnabledWithPhp: `${common.reverseProxy} kann nicht aktiviert werden, während ${common.php} aktiviert ist.`,
reverseProxyCannotBeEnabledWithPython: `${common.reverseProxy} kann nicht aktiviert werden, während ${common.python} aktiviert ist.`,
enableReverseProxy: `${common.enable} ${common.reverseProxy}`,
proxyHostHeader: 'Proxy Host header', // TODO: translate
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/routing.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
fallbackRouting: 'Fallback Routing',
fallbackRoutingPhpPath: `Fallback Routing ${common.php} Pfad`,
legacyPhpRouting: `Legacy ${common.php} Routing`,
enableLegacyRouting: `${common.enable} Legacy Routing`,
routing: 'Routing',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/domain_sections/server.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
domain: 'Domain',
documentRoot: 'Document Root',
oneOrMoreOtherDomainsAreAlsoNamed: 'Eine oder mehrere Domains lauten ebenfalls',
thisWillCauseIssuesWithConfigGeneration:
'Dies sorgt für Probleme beim Generieren der Konfigurationsdateien.',
wwwSubdomain: 'WWW Subdomain',
cdnSubdomain: 'CDN Subdomain',
redirectSubdomains: 'Subdomains weiterleiten',
server: 'Server',
listen: 'Hören auf',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/footer.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
backToTop: 'Zurück nach oben',
thisToolIs: 'Dieses Tool ist',
openSourceOnGitHub: 'Open-Source auf GitHub',
underThe: 'unter der',
mit: 'MIT',
license: 'Lizenz!',
weWelcomeFeedbackAndContributions: 'Feedback und Beiträge sind willkommen.',
originallyCreatedBy: 'Ursprünglich erstellt von',
balintSzekeres: 'Bálint Szekeres',
maintainedBy: 'gepflegt von',
digitalOcean: 'DigitalOcean',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/docker.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
const docker = 'Docker';
const dockerfile = 'Dockerfile';
export default {
docker,
dockerfile,
dockerCompose: `${docker} Compose`,
applyDockerTweaks: `${docker} Optimierungen anwenden`,
applyDockerTweaksForNginx: `Füge Optimierungen für den Betrieb von ${common.nginx} mit ${docker} der Konfigurationsdatei hinzu`,
applyDockerTweaksExplainer: `Setzt den ${common.nginx} Benutzer auf <code class="slim">nginx</code> und die PID auf <code class="slim">/var/run/nginx.pid</code>`,
includeDockerfile: `${dockerfile} hinzufügen, um ${common.nginx} mit ${docker} zu betreiben`,
includeDockerCompose: `docker-compose.yaml hinzufügen, um ${common.nginx} mit docker-compose zu betreiben`,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/https.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
const mozilla = 'Mozilla';
const ipv4 = 'IPv4';
const ipv6 = 'IPv6';
export default {
sslProfile: `${common.ssl} Profil`,
httpsMustBeEnabledOnOneSite: `${common.https} muss auf mindestes einer Webseite aktiviert sein, um globale ${common.https} Einstellungen zu konfigurieren.`,
portReuse: 'Reuseport',
enableReuseOfPort: `${common.enable} Reuseport um einen Socket pro Worker zu generieren`,
ocspDnsResolvers: 'OCSP DNS Resolver',
cloudflareResolver: 'Cloudflare Resolver',
googlePublicDns: 'Google Public DNS',
openDns: 'OpenDNS',
quad9: 'Quad9',
verisign: 'Verisign',
letsEncryptWebroot: `${common.letsEncrypt} Web-Root`,
letsEncryptCertRoot: `${common.letsEncrypt} Zertifikats-Verzeichnis`,
mozillaModern: `${mozilla} Modern`,
mozillaIntermediate: `${mozilla} Intermediate`,
mozillaOld: `${mozilla} Old`,
ipv4Only: `nur ${ipv4}`,
ipv6Only: `nur ${ipv6}`,
ipv4AndIpv6: `${ipv4} & ${ipv6}`,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import https from './https.js';
import logging from './logging.js';
import nginx from './nginx.js';
import performance from './performance.js';
import python from './python.js';
import reverseProxy from './reverse_proxy.js';
import security from './security.js';
import tools from './tools.js';
import docker from './docker.js';
export default {
https,
logging,
nginx,
performance,
python,
reverseProxy,
security,
tools,
docker,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/logging.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
enableFileNotFoundErrorLogging: `${common.enable} "Seite nicht gefunden" Error Logging in`,
logformat: 'log_format',
level: 'logging level', // TODO: translate
enableCloudflare: 'Füge Cloudflare Anfrage-Header dem Standard Log-Format hinzu',
cfRay: 'CF-Ray',
cfConnectingIp: 'CF-Connecting-IP',
xForwardedFor: 'X-Forwarded-For',
xForwardedProto: 'X-Forwarded-Proto',
trueClientIp: 'True-Client-IP',
cfIpCountry: 'CF-IPCountry',
cfVisitor: 'CF-Visitor',
cdnLoop: 'CDN-Loop',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/nginx.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
nginxConfigDirectory: `${common.nginx} Konfigurationsverzeichnis`,
mb: 'MB',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/performance.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
disableHtmlCaching: 'Disable HTML caching', // TODO: translate
enableDisableHtmlCaching: 'disable HTML caching', // TODO: translate
gzipCompression: 'Gzip Komprimierung',
enableGzipCompression: `${common.enable} Gzip Komprimierung`,
brotliCompression: 'Brotli Komprimierung',
enableBrotliCompression: `${common.enable} Brotli Komprimierung`,
brotliIsANonStandardModule: 'Brotli ist kein Standard NGINX Modul. Besuche das ',
brotliGoogleNgxBrotliProject: 'Google ngx_brotli Projekt',
brotliForBuildingNginxWithBrotli: ' für Informationen, wie man NGINX mit Brotli verwendet!',
expirationForAssets: 'Ablauf von Assets',
expirationForMedia: 'Ablauf von Medien',
expirationForSvgs: 'Ablauf von SVGs',
expirationForFonts: 'Ablauf von Schriften',
performance: 'Performance',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/python.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
pythonServer: `${common.python} Server`,
pythonMustBeEnabledOnOneSite: `${common.python} muss auf mindestes einer Webseite aktiviert sein, um globale ${common.python} Einstellungen zu konfigurieren.`,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/reverse_proxy.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
const legacyXForwarded = 'Legacy X-Forwarded-* Header';
export default {
reverseProxyMustBeEnabledOnOneSite: `${common.reverseProxy} muss auf mindestes einer Webseite aktiviert sein, um globale ${common.reverseProxy} Einstellungen zu konfigurieren.`,
seconds: 'Sekunden',
passOn: `${legacyXForwarded} weiterleiten`,
remove: `${legacyXForwarded} aktiv entfernen`,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/security.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
whenUsingWordPressUnsafeEvalIsOftenRequiredToAllowFunctionality: `Bei der Verwendung von ${common.wordPress} ist es oft nötig, <code class="slim">script-src 'self' 'unsafe-inline' 'unsafe-eval';</code> in die Content Security Policy aufzunehmen, damit der Admin-Bereich korrekt funktioniert.`,
security: 'Security',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/global_sections/tools.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
modularizedStructure: 'Modularisierte Struktur',
enableModularizedConfigFiles: `${common.enable} modularisierte Konfigurationsdateien`,
symlinkVhost: 'Symlink VHost',
enableSymLinksFrom: `${common.enable} Symlinks von`,
to: 'zu',
shareConfiguration: 'Konfiguration teilen',
resetConfiguration: 'Konfiguration zurücksetzen',
resetGlobalConfig: 'Globale Konfiguration zurücksetzen',
resetAllDomains: 'Alle Domains zurücksetzen',
removeAllDomains: 'Alle Domains entfernen',
resetAllDomainsConfig: 'Alle Domain-Konfigurationen entfernen',
resetDomainConfig: 'Konfiguration zurücksetzen',
removeDomain: 'Domain entfernen',
yesImSure: 'Ja, ich bin sicher',
noCancel: 'Nein, abbrechen',
tools: 'Tools',
resetGlobalConfigBody:
'Bist du dir sicher, dass du alle Optionen im Bereich "Globale Konfiguration" zurücksetzen möchtest?',
resetAllDomainsConfigBody:
'Bist du dir sicher, dass du die Konfiguration ALLER Domains zurücksetzen möchtest?',
removeAllDomainsBody: 'Bist du dir sicher, dass du ALLE Domains entfernen möchtest?',
areYouSureYouWantToResetAllConfigurationOptionsForThe:
'Bist du dir sicher, dass du die Konfiguration von',
domain: 'zurücksetzen möchtest?',
areYouSureYouWantToRemoveThe: 'Bist du dir sicher, dass du die Domain ',
domainConfiguration: 'entfernen möchtest?',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import app from './app.js';
import setup from './setup.js';
import footer from './footer.js';
import domainSections from './domain_sections/index.js';
import globalSections from './global_sections/index.js';
import setupSections from './setup_sections/index.js';
import callouts from './callouts/index.js';
export default { app, setup, footer, domainSections, globalSections, setupSections, callouts };
================================================
FILE: src/nginxconfig/i18n/de/templates/setup.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
downloadConfig: 'Konfiguration herunterladen',
copyBase64: 'Als Base64 kopieren',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/setup_sections/certbot.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
const certbot = 'Certbot';
export default {
commentOutSslDirectivesInConfiguration: `Kommentiere ${common.ssl}-relevante Direktiven in deiner Konfiguration aus:`,
sslOffDeprecationWarning: `This command will add a temporary <code class="slim">ssl off</code> directive to ensure that ${common.ssl} directives are not active. This may cause ${common.nginx} to emit a warning, which is safe to ignore. The directive will be removed once ${certbot} is configured.`, // TODO: translate
reloadYourNginxServer: `Führe einen reload deines ${common.nginx} Server aus:`,
obtainSslCertificatesFromLetsEncrypt: `Erhalte ${common.ssl} Zertifikate von ${common.letsEncrypt} mittels ${certbot}:`,
uncommentSslDirectivesInConfiguration: `Kommentiere ${common.ssl}-relevante Direktiven in deiner Konfiguration ein:`,
configureCertbotToReloadNginxOnCertificateRenewal: `Konfiguriere ${certbot} um ${common.nginx} neu zu laden, wenn die Zertifikate erfolgreich erneuert wurden:`,
certbotDoesNotNeedToBeSetupForYourConfiguration: `${certbot} muss für deine ${common.nginx} Konfiguration nicht eingerichtet werden.`,
certbot,
};
================================================
FILE: src/nginxconfig/i18n/de/templates/setup_sections/download.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
downloadTheGeneratedConfig: 'Generierte Konfigurationsdateien <b>herunterladen</b>:',
andUploadItToYourServers: 'Auf deinen Server <b>hochladen</b> und ins Verzeichnis ',
directory: 'verschieben.',
or: 'Oder ',
copyBase64StringOfCompressedConfig:
'kopiere einen Base64 String der komprimierten Konfiguration',
pasteItInYourServersCommandLineAndExecute:
', füge ihn auf der Kommandozeile deines Servers ein und führe ihn aus.',
navigateToYourNginxConfigurationDirectoryOnYourServer: `Wechsle in das ${common.nginx} <b>Konfigurationsverzeichnis</b> deines Servers:`,
createABackupOfYourCurrentNginxConfiguration: `Erstelle ein <b>Backup</b> deiner aktuellen ${common.nginx} Konfiguration:`,
extractTheNewCompressedConfigurationArchiveUsingTar:
'<b>Entpacke</b> das komprimierte Konfigurationsverzeichnis mittels tar:',
download: 'Download',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/setup_sections/go_live.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
letsGoLive: 'Jetzt gehts los!',
reloadNginxToLoadInYourNewConfiguration: `Lade ${common.nginx} neu, um deine neue Konfiguration zu verwenden:`,
goLive: 'Los gehts!',
};
================================================
FILE: src/nginxconfig/i18n/de/templates/setup_sections/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import certbot from './certbot.js';
import download from './download.js';
import goLive from './go_live.js';
import ssl from './ssl.js';
export default { certbot, download, goLive, ssl };
================================================
FILE: src/nginxconfig/i18n/de/templates/setup_sections/ssl.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
generateDiffieHellmanKeysByRunningThisCommandOnYourServer:
'Erzeuge <b>Diffie-Hellman Schlüssel</b> indem du diesen Befehl auf deinem Server ausführst:',
createACommonAcmeChallengeDirectoryForLetsEncrypt: `Erstelle ein <b>ACME-Challenge</b> Verzeichnis (für <b>${common.letsEncrypt}</b>):`,
noAdditionalStepsAreNeededToSetUpSslForNginx: `Es sind keine weiteren Schritte nötig, um ${common.ssl} für deine ${common.nginx} Konfiguration einzurichten.`,
sslInit: `${common.ssl} initialisieren`,
};
================================================
FILE: src/nginxconfig/i18n/en/common.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
back: 'Back',
next: 'Next',
enable: 'enable',
php: 'PHP',
ssl: 'SSL',
nginx: 'NGINX',
http: 'HTTP',
https: 'HTTPS',
letsEncrypt: "Let's Encrypt",
python: 'Python',
wordPress: 'WordPress',
drupal: 'Drupal',
magento: 'Magento',
joomla: 'Joomla',
django: 'Django',
logging: 'Logging',
reverseProxy: 'Reverse proxy',
reverseProxyLower: 'reverse proxy',
restrict: 'Restrict',
path: 'Path',
};
================================================
FILE: src/nginxconfig/i18n/en/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from './common.js';
import languages from './languages.js';
import templates from './templates/index.js';
export default { common, languages, templates };
================================================
FILE: src/nginxconfig/i18n/en/languages.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
en: 'English',
es: 'Spanish',
zhCN: 'Chinese (simplified)',
zhTW: 'Chinese (traditional)',
ptBR: 'Portuguese (brazilian)',
fr: 'French',
ru: 'Russian',
pl: 'Polish',
de: 'German',
ja: 'Japanese',
fa: 'Persian',
};
================================================
FILE: src/nginxconfig/i18n/en/templates/app.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../common.js';
export default {
title: `${common.nginx}Config`,
description: `The easiest way to configure a performant, secure, and stable ${common.nginx} server.`,
singleColumnMode: 'Single column mode',
splitColumnMode: 'Side-by-side mode',
perWebsiteConfig: 'Per-website config',
addSite: 'Add site',
globalConfig: 'Global config',
setup: 'Setup',
configFiles: 'Config files',
copied: 'Copied',
};
================================================
FILE: src/nginxconfig/i18n/en/templates/callouts/contribute.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
wantToContributeChanges:
'👋 Want to request new features, contribute changes, or translate the tool into a new language?',
getInvolvedOnGitHub: 'Get involved on GitHub',
};
================================================
FILE: src/nginxconfig/i18n/en/templates/callouts/droplet.js
================================================
/*
Copyright 2021 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
export default {
lookingForAPlaceToDeploy: '👋 Looking for a place to deploy your new configuration?',
tryOutDigitalOceansDroplet: "Try out DigitalOcean's LEMP Droplet with NGINX",
};
================================================
FILE: src/nginxconfig/i18n/en/templates/callouts/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import droplet from './droplet.js';
import contribute from './contribute.js';
export default { droplet, contribute };
================================================
FILE: src/nginxconfig/i18n/en/templates/domain_sections/https.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
enableEncryptedSslConnection: `${common.enable} encrypted ${common.ssl} connections`,
http2: `${common.http}/2`,
enableHttp2Connections: `${common.enable} ${common.http}/2 connections`,
http3: `${common.http}/3`,
enableHttp3Connections: `${common.enable} ${common.http}/3 connections`,
forceHttps: `Force ${common.https}`,
hsts: 'HSTS',
enableStrictTransportSecurity: `${common.enable} Strict Transport Security, requiring HTTPS connections`,
enableIncludeSubDomains: `${common.enable} includeSubDomains directive, requiring HTTPS connections for ALL subdomains`,
enablePreload: `${common.enable} preload directive, telling browsers to always make HTTPS connections only`,
certificationType: 'Certification type',
customCertificate: 'Custom certificate',
letsEncryptEmail: `${common.letsEncrypt} email`,
http3IsANonStandardModule: "HTTP/3 isn't a standard NGINX module, check the ",
http3NginxQuicReadme: 'NGINX QUIC readme',
http3OrThe: ' or the ',
http3CloudflareQuicheProject: 'Cloudflare quiche project',
http3ForBuildingNginxWithHttp3: ' for how to build NGINX with HTTP/3!',
};
================================================
FILE: src/nginxconfig/i18n/en/templates/domain_sections/index.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import https from './https.js';
import logging from './logging.js';
import php from './php.js';
import presets from './presets.js';
import python from './python.js';
import reverseProxy from './reverse_proxy.js';
import routing from './routing.js';
import server from './server.js';
import restrict from './restrict.js';
import onion from './onion.js';
export default {
https,
logging,
php,
presets,
python,
reverseProxy,
routing,
server,
restrict,
onion,
};
================================================
FILE: src/nginxconfig/i18n/en/templates/domain_sections/logging.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
byDomain: 'by domain',
enableForThisDomain: `${common.enable} for this domain`,
arguments: 'arguments',
level: 'logging level',
forRedirects: 'for redirects',
};
================================================
FILE: src/nginxconfig/i18n/en/templates/domain_sections/onion.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
const onion = 'Onion';
export default {
onion,
onionLocation: `${onion} location`,
provideAnOnionLocationToSetOnionLocationHeader:
'Provide an onion location address to set the Onion-Location header for your site.',
letsVisitorsKnownOnionServicesIsAvailable:
'This lets visitors know that an onion services version of your site is available for Tor browsers.',
learnMoreAboutOnionServices: 'Learn more about Onion services',
onionLocationExpectedToEndWithOnion: 'Onion location addresses normally end with `.onion`.',
};
================================================
FILE: src/nginxconfig/i18n/en/templates/domain_sections/php.js
================================================
/*
Copyright 2024 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
*/
import common from '../../common.js';
export default {
phpIsDisabled: `${common.php} is disabled.`,
phpCannotBeEnabledWithReverseProxy: `${common.php} cannot be enabled whilst the reverse proxy is enabled.`,
phpCannotBeEnabledWithPython: `${common.php} cannot be enabled whilst ${common.python} is enabled.`,
enablePhp: `${common.enable} ${common.php}`,
wordPressRules: `${common.wordPress} rules`,
enableWordPressRules: `${common.enable} ${common.wordPress}-specific rules`,
drupalRules: `${common.drupal} rules`,
enableDrupalRules: `${common.enable} ${common.drupal}-specific rules`,
magentoRules: `${common.magento} rules`,
enableMagentoRules: `${common.enable} ${common.magento}-specific rules`,
joomlaRules: `${common.joomla} rules`,
enableJoomlaRules: `${common.enable} ${common.joomla}-specific rules`,
phpServer: `${common.php} server`,
phpBackupServer: `${common.php} backup server`,
tcp: 'TCP',
hhvmSocket: 'HHVM socket',
php70Socket: '7.0 socket',
php71Socket: '7.1 socket',
php72Socket: '7.2 socket',
php73Socket: '7.3 socket',
php74Socket: '7.4 socket',
php80Socket: '8.0 socket',
php81Socket: '8.1 socket',
php82Socket: '8.2 socket',
phpSocket: 'PHP socket',
custom: 'Custom',
disabled: 'Disabled',
};
================================================
FILE: src/nginxconfig/i18n/en/templates/domain_sections/presets.js
================================================
/*
Copyright 2020 DigitalOcean
This code is licensed under the MIT License.
You may obtain a copy of the License at
https://github.com/digitalocean/nginxconfig.io/blob/master/LICENSE or https://mit-license.org/
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and / or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions :
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONT
gitextract_q2tmsz7t/ ├── .babelrc ├── .editorconfig ├── .eslintrc.cjs ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── help.md │ │ ├── report-a-bug.md │ │ └── request-a-feature.md │ ├── PULL_REQUEST_TEMPLATE.md │ └── workflows/ │ ├── do-spaces-workflow.yml │ ├── gh-pages-workflow.yml │ └── test-workflow.yml ├── .gitignore ├── .husky/ │ └── pre-commit ├── .lintstagedrc.json ├── .nvmrc ├── .prettierignore ├── .prettierrc.json ├── LICENSE ├── README.md ├── package.json ├── src/ │ ├── nginxconfig/ │ │ ├── build/ │ │ │ ├── prism.js │ │ │ ├── template.js │ │ │ └── webpack-dynamic-import.js │ │ ├── generators/ │ │ │ ├── conf/ │ │ │ │ ├── drupal.conf.js │ │ │ │ ├── general.conf.js │ │ │ │ ├── joomla.conf.js │ │ │ │ ├── letsencrypt.conf.js │ │ │ │ ├── magento.conf.js │ │ │ │ ├── nginx.conf.js │ │ │ │ ├── php_fastcgi.conf.js │ │ │ │ ├── proxy.conf.js │ │ │ │ ├── python_uwsgi.conf.js │ │ │ │ ├── security.conf.js │ │ │ │ ├── website.conf.js │ │ │ │ └── wordpress.conf.js │ │ │ ├── ext/ │ │ │ │ └── docker.js │ │ │ ├── index.js │ │ │ ├── to_conf.js │ │ │ ├── to_yaml.js │ │ │ └── yaml/ │ │ │ └── dockerCompose.yaml.js │ │ ├── i18n/ │ │ │ ├── de/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── en/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── es/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── fa/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── fr/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── ja/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── pl/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── pt-br/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── ru/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ ├── setup.js │ │ │ ├── verify.js │ │ │ ├── zh-cn/ │ │ │ │ ├── common.js │ │ │ │ ├── index.js │ │ │ │ ├── languages.js │ │ │ │ └── templates/ │ │ │ │ ├── app.js │ │ │ │ ├── callouts/ │ │ │ │ │ ├── contribute.js │ │ │ │ │ ├── droplet.js │ │ │ │ │ └── index.js │ │ │ │ ├── domain_sections/ │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── onion.js │ │ │ │ │ ├── php.js │ │ │ │ │ ├── presets.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── restrict.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── routing.js │ │ │ │ │ └── server.js │ │ │ │ ├── footer.js │ │ │ │ ├── global_sections/ │ │ │ │ │ ├── docker.js │ │ │ │ │ ├── https.js │ │ │ │ │ ├── index.js │ │ │ │ │ ├── logging.js │ │ │ │ │ ├── nginx.js │ │ │ │ │ ├── performance.js │ │ │ │ │ ├── python.js │ │ │ │ │ ├── reverse_proxy.js │ │ │ │ │ ├── security.js │ │ │ │ │ └── tools.js │ │ │ │ ├── index.js │ │ │ │ ├── setup.js │ │ │ │ └── setup_sections/ │ │ │ │ ├── certbot.js │ │ │ │ ├── download.js │ │ │ │ ├── go_live.js │ │ │ │ ├── index.js │ │ │ │ └── ssl.js │ │ │ └── zh-tw/ │ │ │ ├── common.js │ │ │ ├── index.js │ │ │ ├── languages.js │ │ │ └── templates/ │ │ │ ├── app.js │ │ │ ├── callouts/ │ │ │ │ ├── contribute.js │ │ │ │ ├── droplet.js │ │ │ │ └── index.js │ │ │ ├── domain_sections/ │ │ │ │ ├── https.js │ │ │ │ ├── index.js │ │ │ │ ├── logging.js │ │ │ │ ├── onion.js │ │ │ │ ├── php.js │ │ │ │ ├── presets.js │ │ │ │ ├── python.js │ │ │ │ ├── restrict.js │ │ │ │ ├── reverse_proxy.js │ │ │ │ ├── routing.js │ │ │ │ └── server.js │ │ │ ├── footer.js │ │ │ ├── global_sections/ │ │ │ │ ├── docker.js │ │ │ │ ├── https.js │ │ │ │ ├── index.js │ │ │ │ ├── logging.js │ │ │ │ ├── nginx.js │ │ │ │ ├── performance.js │ │ │ │ ├── python.js │ │ │ │ ├── reverse_proxy.js │ │ │ │ ├── security.js │ │ │ │ └── tools.js │ │ │ ├── index.js │ │ │ ├── setup.js │ │ │ └── setup_sections/ │ │ │ ├── certbot.js │ │ │ ├── download.js │ │ │ ├── go_live.js │ │ │ ├── index.js │ │ │ └── ssl.js │ │ ├── mount.js │ │ ├── scss/ │ │ │ ├── _callout.scss │ │ │ ├── _code.scss │ │ │ ├── _columns.scss │ │ │ ├── _fields.scss │ │ │ ├── _files.scss │ │ │ ├── _footer.scss │ │ │ ├── _header.scss │ │ │ ├── _modals.scss │ │ │ ├── _panel.scss │ │ │ ├── _setup.scss │ │ │ ├── _tabs.scss │ │ │ ├── _vue-select.scss │ │ │ └── style.scss │ │ ├── templates/ │ │ │ ├── app.vue │ │ │ ├── callouts/ │ │ │ │ ├── contribute.vue │ │ │ │ └── droplet.vue │ │ │ ├── domain.vue │ │ │ ├── domain_sections/ │ │ │ │ ├── https.vue │ │ │ │ ├── index.js │ │ │ │ ├── logging.vue │ │ │ │ ├── onion.vue │ │ │ │ ├── php.vue │ │ │ │ ├── presets.vue │ │ │ │ ├── python.vue │ │ │ │ ├── restrict.vue │ │ │ │ ├── reverse_proxy.vue │ │ │ │ ├── routing.vue │ │ │ │ └── server.vue │ │ │ ├── footer.vue │ │ │ ├── global.vue │ │ │ ├── global_sections/ │ │ │ │ ├── docker.vue │ │ │ │ ├── https.vue │ │ │ │ ├── index.js │ │ │ │ ├── logging.vue │ │ │ │ ├── nginx.vue │ │ │ │ ├── performance.vue │ │ │ │ ├── python.vue │ │ │ │ ├── reverse_proxy.vue │ │ │ │ ├── security.vue │ │ │ │ └── tools.vue │ │ │ ├── inputs/ │ │ │ │ ├── checkbox.vue │ │ │ │ └── radio.vue │ │ │ ├── prism/ │ │ │ │ ├── bash.vue │ │ │ │ ├── docker.vue │ │ │ │ ├── nginx.vue │ │ │ │ └── yaml.vue │ │ │ ├── setup.vue │ │ │ └── setup_sections/ │ │ │ ├── certbot.vue │ │ │ ├── download.vue │ │ │ ├── go_live.vue │ │ │ ├── index.js │ │ │ └── ssl.vue │ │ └── util/ │ │ ├── analytics.js │ │ ├── angular_backwards_compatibility.js │ │ ├── browser_language.js │ │ ├── camel_to_snake.js │ │ ├── common_hsts.js │ │ ├── computed_from_defaults.js │ │ ├── deep_merge.js │ │ ├── defaults.js │ │ ├── delegated_from_defaults.js │ │ ├── export_data.js │ │ ├── get_ssl_certificate.js │ │ ├── import_data.js │ │ ├── is_changed.js │ │ ├── is_object.js │ │ ├── language_packs.js │ │ ├── log.js │ │ ├── logging.js │ │ ├── php_path.js │ │ ├── php_upstream.js │ │ ├── prism_bundle.js │ │ ├── share_query.js │ │ ├── snake_to_camel.js │ │ ├── ssl_profiles.js │ │ ├── types_extensions.js │ │ └── vue_backwards_compatibility.js │ └── static/ │ └── robots.txt ├── test/ │ └── testBrowserLanguage.js └── vue.config.js
SYMBOL INDEX (13 symbols across 3 files)
FILE: src/nginxconfig/util/computed_from_defaults.js
method get (line 32) | get() {
method set (line 35) | set(value) {
method get (line 52) | get() {
method get (line 57) | get() {
method get (line 62) | get() {
FILE: src/nginxconfig/util/import_data.js
method decoder (line 70) | decoder(value) {
FILE: test/testBrowserLanguage.js
class MockLocales (line 29) | class MockLocales {
method setNavigatorLanguages (line 38) | static setNavigatorLanguages(langs) {
method setNavigatorLanguage (line 43) | static setNavigatorLanguage(lang) {
method setDateTimeLocale (line 48) | static setDateTimeLocale(locale) {
method restoreDateTimeLocale (line 66) | static restoreDateTimeLocale() {
method setNavigator (line 73) | static setNavigator(navigator) {
method restoreNavigator (line 79) | static restoreNavigator() {
Condensed preview — 518 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,307K chars).
[
{
"path": ".babelrc",
"chars": 257,
"preview": "{\n \"presets\": [[\n \"@babel/preset-env\",\n {\n \"corejs\": \"3\",\n \"useBuiltIns\": \"usage\""
},
{
"path": ".editorconfig",
"chars": 176,
"preview": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\nindent_style = space\nindent_size = 4\n\n[*.scss]\nindent_size"
},
{
"path": ".eslintrc.cjs",
"chars": 1390,
"preview": "module.exports = {\n env: {\n browser: true,\n node: true,\n },\n extends: ['eslint:recommended', 'plu"
},
{
"path": ".github/ISSUE_TEMPLATE/help.md",
"chars": 774,
"preview": "---\nname: Help ❓\nabout: Encountered a problem with the tool?\n---\n\n<!-- Don't write inside the arrows as they will be hid"
},
{
"path": ".github/ISSUE_TEMPLATE/report-a-bug.md",
"chars": 1158,
"preview": "---\nname: Report a bug 🐛\nabout: Report a bug with the tool. Only use this if you're 100% sure there's something wrong, o"
},
{
"path": ".github/ISSUE_TEMPLATE/request-a-feature.md",
"chars": 1377,
"preview": "---\nname: Request a feature 🆕\nabout: Suggest a new feature that you would like in the tool!\n---\n\n<!-- Fill out the templ"
},
{
"path": ".github/PULL_REQUEST_TEMPLATE.md",
"chars": 795,
"preview": "## Type of Change\n<!-- What part of the source are you modifying? Remove the irrelevant options. -->\n\n- **Build Scripts:"
},
{
"path": ".github/workflows/do-spaces-workflow.yml",
"chars": 1306,
"preview": "name: Deploy to DigitalOcean Spaces\n\non: push\n\npermissions:\n contents: write\n\njobs:\n build:\n runs-on: ubuntu-latest"
},
{
"path": ".github/workflows/gh-pages-workflow.yml",
"chars": 827,
"preview": "name: Test and deploy to GitHub Pages\n\non:\n push:\n branches:\n - master\n\npermissions:\n contents: write\n\nconcurr"
},
{
"path": ".github/workflows/test-workflow.yml",
"chars": 1546,
"preview": "name: Test commit or pull request\n\non: [push, pull_request]\n\njobs:\n eslint:\n runs-on: ubuntu-latest\n\n steps:\n "
},
{
"path": ".gitignore",
"chars": 80,
"preview": "node_modules\n.cache\n.idea\n.vscode\n.DS_Store\n\n/build/\n/dist/\n/dev/\n\n.eslintcache\n"
},
{
"path": ".husky/pre-commit",
"chars": 58,
"preview": "#!/bin/sh\n. \"$(dirname \"$0\")/_/husky.sh\"\n\nnpx lint-staged\n"
},
{
"path": ".lintstagedrc.json",
"chars": 175,
"preview": "{\n \"*.{js,vue}\": [\n \"prettier --write\",\n \"eslint --quiet --cache --fix\"\n ],\n \"*.scss\": [\n \"stylelint --confi"
},
{
"path": ".nvmrc",
"chars": 8,
"preview": "v20.9.0\n"
},
{
"path": ".prettierignore",
"chars": 31,
"preview": "package.json\npackage-lock.json\n"
},
{
"path": ".prettierrc.json",
"chars": 214,
"preview": "{\n \"singleQuote\": true,\n \"trailingComma\": \"all\",\n \"vueIndentScriptAndStyle\": true,\n \"htmlWhitespaceSensitivi"
},
{
"path": "LICENSE",
"chars": 1069,
"preview": "MIT License\n\nCopyright (c) 2020 DigitalOcean\n\nPermission is hereby granted, free of charge, to any person obtaining a co"
},
{
"path": "README.md",
"chars": 5915,
"preview": "[](https://github.com/digitalocean/n"
},
{
"path": "package.json",
"chars": 3800,
"preview": "{\n \"name\": \"nginxconfig.io\",\n \"version\": \"1.0.0\",\n \"description\": \"NGINX config generator on steroids\",\n \"license\": "
},
{
"path": "src/nginxconfig/build/prism.js",
"chars": 1828,
"preview": "/*\nCopyright 2022 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/build/template.js",
"chars": 1926,
"preview": "/*\nCopyright 2022 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/build/webpack-dynamic-import.js",
"chars": 1510,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/drupal.conf.js",
"chars": 2471,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/general.conf.js",
"chars": 5198,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/joomla.conf.js",
"chars": 1848,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/letsencrypt.conf.js",
"chars": 1507,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/magento.conf.js",
"chars": 3721,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/nginx.conf.js",
"chars": 11377,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/php_fastcgi.conf.js",
"chars": 2288,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/proxy.conf.js",
"chars": 2694,
"preview": "/*\nCopyright 2022 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/python_uwsgi.conf.js",
"chars": 1835,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/security.conf.js",
"chars": 3352,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/website.conf.js",
"chars": 21622,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/conf/wordpress.conf.js",
"chars": 3010,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/ext/docker.js",
"chars": 1320,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/index.js",
"chars": 4978,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/to_conf.js",
"chars": 5088,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/to_yaml.js",
"chars": 1354,
"preview": "/*\nCopyright 2022 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/generators/yaml/dockerCompose.yaml.js",
"chars": 1503,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/common.js",
"chars": 1740,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/index.js",
"chars": 1412,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/languages.js",
"chars": 1541,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/app.js",
"chars": 1758,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/callouts/contribute.js",
"chars": 1465,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/callouts/droplet.js",
"chars": 1440,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/callouts/index.js",
"chars": 1361,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/https.js",
"chars": 2520,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/index.js",
"chars": 1742,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/logging.js",
"chars": 1494,
"preview": "/*\nCopyright 2022 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/onion.js",
"chars": 1804,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/php.js",
"chars": 2635,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/presets.js",
"chars": 1622,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/python.js",
"chars": 1791,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/restrict.js",
"chars": 1360,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/reverse_proxy.js",
"chars": 1770,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/routing.js",
"chars": 1547,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/domain_sections/server.js",
"chars": 1695,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/footer.js",
"chars": 1691,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/docker.js",
"chars": 1997,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/https.js",
"chars": 2250,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/index.js",
"chars": 1711,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/logging.js",
"chars": 1823,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/nginx.js",
"chars": 1386,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/performance.js",
"chars": 2126,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/python.js",
"chars": 1510,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/reverse_proxy.js",
"chars": 1664,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/security.js",
"chars": 1625,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/global_sections/tools.js",
"chars": 2697,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/index.js",
"chars": 1646,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/setup.js",
"chars": 1352,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/setup_sections/certbot.js",
"chars": 2422,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/setup_sections/download.js",
"chars": 2204,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/setup_sections/go_live.js",
"chars": 1479,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/setup_sections/index.js",
"chars": 1431,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/de/templates/setup_sections/ssl.js",
"chars": 1816,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/common.js",
"chars": 1727,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/index.js",
"chars": 1412,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/languages.js",
"chars": 1517,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/app.js",
"chars": 1705,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/callouts/contribute.js",
"chars": 1448,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/callouts/droplet.js",
"chars": 1433,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/callouts/index.js",
"chars": 1361,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/https.js",
"chars": 2454,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/index.js",
"chars": 1742,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/logging.js",
"chars": 1480,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/onion.js",
"chars": 1804,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/php.js",
"chars": 2567,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/presets.js",
"chars": 1593,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/python.js",
"chars": 1752,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/restrict.js",
"chars": 1350,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/reverse_proxy.js",
"chars": 1722,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/routing.js",
"chars": 1547,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/domain_sections/server.js",
"chars": 1658,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/footer.js",
"chars": 1680,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/docker.js",
"chars": 1928,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/https.js",
"chars": 2226,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/index.js",
"chars": 1711,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/logging.js",
"chars": 1792,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/nginx.js",
"chars": 1377,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/performance.js",
"chars": 2070,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/python.js",
"chars": 1484,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/reverse_proxy.js",
"chars": 1641,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/security.js",
"chars": 1603,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/global_sections/tools.js",
"chars": 2574,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/index.js",
"chars": 1646,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/setup.js",
"chars": 1332,
"preview": "/*\nCopyright 2020 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/setup_sections/certbot.js",
"chars": 2341,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/setup_sections/download.js",
"chars": 2120,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/setup_sections/go_live.js",
"chars": 1465,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/setup_sections/index.js",
"chars": 1431,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/en/templates/setup_sections/ssl.js",
"chars": 1776,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/common.js",
"chars": 1740,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/index.js",
"chars": 1412,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/languages.js",
"chars": 1508,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/app.js",
"chars": 1764,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/callouts/contribute.js",
"chars": 1458,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/callouts/droplet.js",
"chars": 1433,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/callouts/index.js",
"chars": 1361,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/https.js",
"chars": 2536,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/index.js",
"chars": 1742,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/logging.js",
"chars": 1541,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/onion.js",
"chars": 1894,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/php.js",
"chars": 2656,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/presets.js",
"chars": 1702,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/python.js",
"chars": 1789,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/restrict.js",
"chars": 1363,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/reverse_proxy.js",
"chars": 1768,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/routing.js",
"chars": 1588,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/domain_sections/server.js",
"chars": 1802,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/footer.js",
"chars": 1698,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/docker.js",
"chars": 1952,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/https.js",
"chars": 2361,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/index.js",
"chars": 1711,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/logging.js",
"chars": 1858,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/nginx.js",
"chars": 1391,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/performance.js",
"chars": 2132,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/python.js",
"chars": 1507,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/reverse_proxy.js",
"chars": 1659,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/security.js",
"chars": 1630,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/global_sections/tools.js",
"chars": 2789,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/index.js",
"chars": 1646,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/setup.js",
"chars": 1342,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/setup_sections/certbot.js",
"chars": 2387,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/setup_sections/download.js",
"chars": 2327,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/setup_sections/go_live.js",
"chars": 1479,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/setup_sections/index.js",
"chars": 1431,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/es/templates/setup_sections/ssl.js",
"chars": 1793,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/common.js",
"chars": 1733,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/index.js",
"chars": 1412,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/languages.js",
"chars": 1492,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/app.js",
"chars": 1717,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/callouts/contribute.js",
"chars": 1455,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/callouts/droplet.js",
"chars": 1431,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/callouts/index.js",
"chars": 1361,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/https.js",
"chars": 2423,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/index.js",
"chars": 1742,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/logging.js",
"chars": 1481,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/onion.js",
"chars": 1814,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/php.js",
"chars": 2532,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/presets.js",
"chars": 1608,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/python.js",
"chars": 1750,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/restrict.js",
"chars": 1348,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/reverse_proxy.js",
"chars": 1728,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/routing.js",
"chars": 1553,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/domain_sections/server.js",
"chars": 1648,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/footer.js",
"chars": 1660,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/docker.js",
"chars": 1936,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/https.js",
"chars": 2239,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/index.js",
"chars": 1711,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/logging.js",
"chars": 1783,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/nginx.js",
"chars": 1379,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/performance.js",
"chars": 2069,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/python.js",
"chars": 1485,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/reverse_proxy.js",
"chars": 1645,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/security.js",
"chars": 1594,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/global_sections/tools.js",
"chars": 2617,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/index.js",
"chars": 1646,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/setup.js",
"chars": 1331,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/setup_sections/certbot.js",
"chars": 2373,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/setup_sections/download.js",
"chars": 2103,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/setup_sections/go_live.js",
"chars": 1480,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/setup_sections/index.js",
"chars": 1431,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fa/templates/setup_sections/ssl.js",
"chars": 1779,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/common.js",
"chars": 1738,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/index.js",
"chars": 1412,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/languages.js",
"chars": 1519,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/app.js",
"chars": 1757,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/callouts/contribute.js",
"chars": 1482,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/callouts/droplet.js",
"chars": 1440,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/callouts/index.js",
"chars": 1361,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/https.js",
"chars": 2512,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/index.js",
"chars": 1742,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/logging.js",
"chars": 1539,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/onion.js",
"chars": 1807,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/php.js",
"chars": 2648,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/presets.js",
"chars": 1628,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/python.js",
"chars": 1793,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/restrict.js",
"chars": 1355,
"preview": "/*\nCopyright 2021 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/reverse_proxy.js",
"chars": 1782,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
},
{
"path": "src/nginxconfig/i18n/fr/templates/domain_sections/routing.js",
"chars": 1547,
"preview": "/*\nCopyright 2024 DigitalOcean\n\nThis code is licensed under the MIT License.\nYou may obtain a copy of the License at\nhtt"
}
]
// ... and 318 more files (download for full content)
About this extraction
This page contains the full source code of the digitalocean/nginxconfig.io GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 518 files (1.2 MB), approximately 283.6k tokens, and a symbol index with 13 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.