Skip to content
This repository has been archived by the owner on Apr 17, 2023. It is now read-only.

Configure Nginx on OS X

Attila Levente EGYEDI edited this page Apr 6, 2017 · 17 revisions

Modify the config file

Edit the Nginx GEO config file

sudo vi $NGINX_HOME/cedar/cedar-geo.inc.conf

Add this content:

geo $isInternalNetwork {
    default 0;
    172.27.0.0/16 0;
}

geo $isMaintenance {
    default 0;
}

Edit the Nginx SSL config file

sudo vi $NGINX_HOME/cedar/cedar-ssl.conf

Add this content:

ssl_certificate     /usr/local/etc/nginx/cedar/ssl/cedar.metadatacenter.orgx.crt;
ssl_certificate_key /usr/local/etc/nginx/cedar/ssl/cedar.metadatacenter.orgx.key;

Edit the Nginx configuration file

sudo vi $NGINX_HOME/cedar/cedar-main.inc.conf

Important: Please replace <CEDAR_HOME> with your CEDAR_HOME value in the below content. Nginx does not support environment variables in its config file!

Remark: You can generate this config file content by running:

cedarat nginx-config-generate

Replace the content with the below.

error_log		<CEDAR_HOME>log/nginx/nginx-error.log;

proxy_http_version		1.1; #this is essential for chunked responses
proxy_buffering		off;
proxy_set_header		X-Real-IP $remote_addr;
proxy_set_header		X-Scheme $scheme;
proxy_set_header		X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header		Host $http_host;
proxy_intercept_errors		on;

map $status $loggable {
	~^[3]  0;
	default 1;
}

# proxies --------------------------------------------------------

upstream cedar-frontend {
	server 127.0.0.1:4200;
}

upstream cedar-backend-folder {
	server 127.0.0.1:9008;
}

upstream cedar-backend-group {
	server 127.0.0.1:9009;
}

upstream cedar-backend-repo {
	server 127.0.0.1:9002;
}

upstream cedar-backend-resource {
	server 127.0.0.1:9007;
}

upstream cedar-backend-schema {
	server 127.0.0.1:9003;
}

upstream cedar-backend-submission {
	server 127.0.0.1:9010;
}

upstream cedar-backend-template {
	server 127.0.0.1:9001;
}

upstream cedar-backend-terminology {
	server 127.0.0.1:9004;
}

upstream cedar-backend-user {
	server 127.0.0.1:9005;
}

upstream cedar-backend-valuerecommender {
	server 127.0.0.1:9006;
}

upstream cedar-backend-worker {
	server 127.0.0.1:9011;
}

upstream cedar-backend-auth-https {
	server 127.0.0.1:8543;
}

# no subdomain --------------------------------------------------------

server {
	listen		80;
	server_name		metadatacenter.orgx;
	return		301 https://cedar.metadatacenter.orgx$request_uri;
}

server {
	listen		443;
	server_name		metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	return		301 https://cedar.metadatacenter.orgx$request_uri;
}

# frontend --------------------------------------------------------

server {
	listen		80;
	server_name		cedar.metadatacenter.orgx;
	return		301 https://cedar.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		cedar.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-frontend;
	}
	error_log		<CEDAR_HOME>log/cedar-template-editor/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-template-editor/nginx-access.log combined if=$loggable;
}

# folder --------------------------------------------------------

server {
	listen		80;
	server_name		folder.metadatacenter.orgx;
	return		301 https://folder.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		folder.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-folder;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-folder-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-folder-server/nginx-access.log combined if=$loggable;
}

# group --------------------------------------------------------

server {
	listen		80;
	server_name		group.metadatacenter.orgx;
	return		301 https://group.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		group.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-group;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-group-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-group-server/nginx-access.log combined if=$loggable;
}

# repo --------------------------------------------------------

server {
	listen		80;
	server_name		repo.metadatacenter.orgx;
	return		301 https://repo.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		repo.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-repo;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-repo-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-repo-server/nginx-access.log combined if=$loggable;
}

# resource --------------------------------------------------------

server {
	listen		80;
	server_name		resource.metadatacenter.orgx;
	return		301 https://resource.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		resource.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-resource;
	}
	location /api {
		alias		<CEDAR_HOME>cedar-swagger-ui;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-resource-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-resource-server/nginx-access.log combined if=$loggable;
}

# schema --------------------------------------------------------

server {
	listen		80;
	server_name		schema.metadatacenter.orgx;
	return		301 https://schema.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		schema.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-schema;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-schema-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-schema-server/nginx-access.log combined if=$loggable;
}

# submission --------------------------------------------------------

server {
	listen		80;
	server_name		submission.metadatacenter.orgx;
	return		301 https://submission.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		submission.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-submission;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-submission-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-submission-server/nginx-access.log combined if=$loggable;
}

# template --------------------------------------------------------

server {
	listen		80;
	server_name		template.metadatacenter.orgx;
	return		301 https://template.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		template.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-template;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-template-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-template-server/nginx-access.log combined if=$loggable;
}

# terminology --------------------------------------------------------

server {
	listen		80;
	server_name		terminology.metadatacenter.orgx;
	return		301 https://terminology.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		terminology.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-terminology;
	}
	location /api {
		alias		<CEDAR_HOME>cedar-swagger-ui;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-terminology-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-terminology-server/nginx-access.log combined if=$loggable;
}

# user --------------------------------------------------------

server {
	listen		80;
	server_name		user.metadatacenter.orgx;
	return		301 https://user.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		user.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-user;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-user-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-user-server/nginx-access.log combined if=$loggable;
}

# valuerecommender --------------------------------------------------------

server {
	listen		80;
	server_name		valuerecommender.metadatacenter.orgx;
	return		301 https://valuerecommender.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		valuerecommender.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-valuerecommender;
	}
	location /api {
		alias		<CEDAR_HOME>cedar-swagger-ui;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-valuerecommender-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-valuerecommender-server/nginx-access.log combined if=$loggable;
}

# worker --------------------------------------------------------

server {
	listen		80;
	server_name		worker.metadatacenter.orgx;
	return		301 https://worker.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		worker.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		http://cedar-backend-worker;
	}
	error_page		502 /errors/502.json;
	location		^~ /errors/ {
		internal;
		root		<CEDAR_HOME>cedar-conf/static-content/localhost/;
	}
	error_log		<CEDAR_HOME>log/cedar-worker-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-worker-server/nginx-access.log combined if=$loggable;
}

# auth --------------------------------------------------------

server {
	listen		80;
	server_name		auth.metadatacenter.orgx;
	return		301 https://auth.metadatacenter.orgx$request_uri;
}

server {
	listen		443 ssl;
	server_name		auth.metadatacenter.orgx;
	include		cedar/cedar-ssl.conf;
	location / {
		proxy_pass		https://cedar-backend-auth-https;
	}
	error_log		<CEDAR_HOME>log/cedar-auth-server/nginx-error.log warn;
	access_log		<CEDAR_HOME>log/cedar-auth-server/nginx-access.log combined if=$loggable;
}

If Nginx is running, stop it:

sudo nginx -s stop 

Then restart it:

sudo nginx
Clone this wiki locally